git-p4: test cloning with two dirs, clarify doc
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>
This commit is contained in:
parent
ef86890ce5
commit
da191d15bf
@ -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.
|
||||
|
||||
|
@ -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" &&
|
||||
|
Loading…
Reference in New Issue
Block a user