Skip to content

Commit

Permalink
git-p4: honor --changesfile option and test
Browse files Browse the repository at this point in the history
When an explicit list of changes is given, it makes no sense to
use @all or @3,5 or any of the other p4 revision specifiers.
Make the code notice when this happens, instead of just ignoring
--changesfile.  Test it.

Signed-off-by: Pete Wyckoff <pw@padd.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Pete Wyckoff authored and Junio C Hamano committed Dec 27, 2011
1 parent 1471c6b commit 58c8bc7
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 1 deletion.
16 changes: 15 additions & 1 deletion contrib/fast-import/git-p4
Original file line number Diff line number Diff line change
Expand Up @@ -2024,6 +2024,17 @@ class P4Sync(Command, P4UserMap):
revision = ""
self.users = {}

# Make sure no revision specifiers are used when --changesfile
# is specified.
bad_changesfile = False
if len(self.changesFile) > 0:
for p in self.depotPaths:
if p.find("@") >= 0 or p.find("#") >= 0:
bad_changesfile = True
break
if bad_changesfile:
die("Option --changesfile is incompatible with revision specifiers")

newPaths = []
for p in self.depotPaths:
if p.find("@") != -1:
Expand All @@ -2040,7 +2051,10 @@ class P4Sync(Command, P4UserMap):
revision = p[hashIdx:]
p = p[:hashIdx]
elif self.previousDepotPaths == []:
revision = "#head"
# pay attention to changesfile, if given, else import
# the entire p4 tree at the head revision
if len(self.changesFile) == 0:
revision = "#head"

p = re.sub ("\.\.\.$", "", p)
if not p.endswith("/"):
Expand Down
23 changes: 23 additions & 0 deletions t/t9806-git-p4-options.sh
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,29 @@ test_expect_success 'clone --branch' '
)
'

test_expect_success 'clone --changesfile' '
cf="$TRASH_DIRECTORY/cf" &&
test_when_finished "rm \"$cf\"" &&
printf "1\n3\n" >"$cf" &&
"$GITP4" clone --changesfile="$cf" --dest="$git" //depot &&
test_when_finished cleanup_git &&
(
cd "$git" &&
git log --oneline p4/master >lines &&
test_line_count = 2 lines
test_path_is_file file1 &&
test_path_is_missing file2 &&
test_path_is_file file3
)
'

test_expect_success 'clone --changesfile, @all' '
cf="$TRASH_DIRECTORY/cf" &&
test_when_finished "rm \"$cf\"" &&
printf "1\n3\n" >"$cf" &&
test_must_fail "$GITP4" clone --changesfile="$cf" --dest="$git" //depot@all
'

test_expect_success 'kill p4d' '
kill_p4d
'
Expand Down

0 comments on commit 58c8bc7

Please sign in to comment.