Skip to content

Commit

Permalink
git-p4: test cloning with two dirs, clarify doc
Browse files Browse the repository at this point in the history
Document how git-p4 currently works when specifying multiple
depot paths:

1.  No branches or directories are named.

2.  Conflicting files are silently ignored---the last change
    wins.

2.  Option --destination is required, else the last path is construed
    to be a directory.

3.  Revision specifiers must be the same on all paths for them to
    take effect.

Test this behavior.

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 ef86890 commit da191d1
Show file tree
Hide file tree
Showing 2 changed files with 69 additions and 2 deletions.
11 changes: 9 additions & 2 deletions Documentation/git-p4.txt
Original file line number Diff line number Diff line change
Expand Up @@ -276,8 +276,15 @@ p4 revision specifier on the end:
"//depot/my/project@1,6"::
Import only changes 1 through 6.

"//depot/proj1 //depot/proj2@all"::
Import all changes from both named depot paths.
"//depot/proj1@all //depot/proj2@all"::
Import all changes from both named depot paths into a single
repository. Only files below these directories are included.
There is not a subdirectory in git for each "proj1" and "proj2".
You must use the '--destination' option when specifying more
than one depot path. The revision specifier must be specified
identically on each depot path. If there are files in the
depot paths with the same name, the path with the most recently
updated version of the file is the one that appears in git.

See 'p4 help revisions' for the full syntax of p4 revision specifiers.

Expand Down
60 changes: 60 additions & 0 deletions t/t9800-git-p4-basic.sh
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,66 @@ test_expect_success 'git-p4 sync new branch' '
)
'

test_expect_success 'clone two dirs' '
(
cd "$cli" &&
mkdir sub1 sub2 &&
echo sub1/f1 >sub1/f1 &&
echo sub2/f2 >sub2/f2 &&
p4 add sub1/f1 &&
p4 submit -d "sub1/f1" &&
p4 add sub2/f2 &&
p4 submit -d "sub2/f2"
) &&
"$GITP4" clone --dest="$git" //depot/sub1 //depot/sub2 &&
test_when_finished cleanup_git &&
(
cd "$git" &&
git ls-files >lines &&
test_line_count = 2 lines &&
git log --oneline p4/master >lines &&
test_line_count = 1 lines
)
'

test_expect_success 'clone two dirs, @all' '
(
cd "$cli" &&
echo sub1/f3 >sub1/f3 &&
p4 add sub1/f3 &&
p4 submit -d "sub1/f3"
) &&
"$GITP4" clone --dest="$git" //depot/sub1@all //depot/sub2@all &&
test_when_finished cleanup_git &&
(
cd "$git" &&
git ls-files >lines &&
test_line_count = 3 lines &&
git log --oneline p4/master >lines &&
test_line_count = 3 lines
)
'

test_expect_success 'clone two dirs, @all, conflicting files' '
(
cd "$cli" &&
echo sub2/f3 >sub2/f3 &&
p4 add sub2/f3 &&
p4 submit -d "sub2/f3"
) &&
"$GITP4" clone --dest="$git" //depot/sub1@all //depot/sub2@all &&
test_when_finished cleanup_git &&
(
cd "$git" &&
git ls-files >lines &&
test_line_count = 3 lines &&
git log --oneline p4/master >lines &&
test_line_count = 4 lines &&
echo sub2/f3 >expected &&
test_cmp expected f3
)
'

test_expect_success 'exit when p4 fails to produce marshaled output' '
badp4dir="$TRASH_DIRECTORY/badp4dir" &&
mkdir "$badp4dir" &&
Expand Down

0 comments on commit da191d1

Please sign in to comment.