git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH 04/11] git-p4: test cloning with two dirs, clarify doc

From
PWPete Wyckoff <pw@padd.com>
Date
Dec 25, 2011, 02:07 UTC
Message-ID
<1324778860-4821-5-git-send-email-pw@padd.com>
In-Reply-To
<1324778860-4821-1-git-send-email-pw@padd.com>

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>
---
 Documentation/git-p4.txt |   11 +++++++-
 t/t9800-git-p4-basic.sh  |   60 ++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 69 insertions(+), 2 deletions(-)
diff --git a/Documentation/git-p4.txt b/Documentation/git-p4.txt
index c981407..c15b3b7 100644
--- a/Documentation/git-p4.txt
+++ b/Documentation/git-p4.txt
@@ -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.
 
diff --git a/t/t9800-git-p4-basic.sh b/t/t9800-git-p4-basic.sh
index 272de3f..04ee20e 100755
--- a/t/t9800-git-p4-basic.sh
+++ b/t/t9800-git-p4-basic.sh
@@ -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" &&
-- 
1.7.8.534.g03ab.dirty
Previous: Pete WyckoffNext: Pete Wyckoff
Message 5 of 12 in “[PATCHv3 00/11] git-p4: asciidoc documentation and fixes”
  1. Pete WyckoffDec 25, 2011
  2. 01/11 rename git-p4 testsPete Wyckoff, Dec 25, 2011
  3. 02/11 git-p4: introduce asciidoc documentationPete Wyckoff, Dec 25, 2011
  4. 03/11 git-p4: clone does not use --git-dirPete Wyckoff, Dec 25, 2011
  5. 04/11 git-p4: test cloning with two dirs, clarify docPete Wyckoff, Dec 25, 2011
  6. 05/11 git-p4: document and test clone --branchPete Wyckoff, Dec 25, 2011
  7. 06/11 git-p4: honor --changesfile option and testPete Wyckoff, Dec 25, 2011
  8. 07/11 git-p4: document and test --import-localPete Wyckoff, Dec 25, 2011
  9. 08/11 git-p4: test --max-changesPete Wyckoff, Dec 25, 2011
  10. 09/11 git-p4: test --keep-pathPete Wyckoff, Dec 25, 2011
  11. 10/11 git-p4: test and document --use-client-specPete Wyckoff, Dec 25, 2011
  12. 11/11 git-p4: document and test submit optionsPete Wyckoff, Dec 25, 2011

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.