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

[PATCH 06/11] git-p4: honor --changesfile option and test

From
PWPete Wyckoff <pw@padd.com>
Date
Dec 17, 2011, 18:52 UTC
Message-ID
<1324147942-21558-7-git-send-email-pw@padd.com>
In-Reply-To
<1324147942-21558-1-git-send-email-pw@padd.com>

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>
---
 contrib/fast-import/git-p4 |   16 +++++++++++++++-
 t/t9806-options.sh         |   23 +++++++++++++++++++++++
 2 files changed, 38 insertions(+), 1 deletions(-)
diff --git a/contrib/fast-import/git-p4 b/contrib/fast-import/git-p4
index 14d6d7d..6fe2fcf 100755
--- a/contrib/fast-import/git-p4
+++ b/contrib/fast-import/git-p4
@@ -2020,6 +2020,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:
@@ -2036,7 +2047,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("/"):
diff --git a/t/t9806-options.sh b/t/t9806-options.sh
index 7e2e45a..7a1dba6 100755
--- a/t/t9806-options.sh
+++ b/t/t9806-options.sh
@@ -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
 '
-- 
1.7.8.258.g45cc3c
Previous: Pete WyckoffNext: Pete Wyckoff
Message 15 of 20 in “git-p4: asciidoc documentation and fixes”
  1. 00/11 git-p4: asciidoc documentation and fixesPete Wyckoff, Dec 17, 2011
  2. 01/11 git-p4: introduce asciidoc documentationPete Wyckoff, Dec 17, 2011
  3. 02/11 git-p4: test debug macroPete Wyckoff, Dec 17, 2011
  4. Luke DiamandDec 17, 2011
  5. 02/11 git-p4: test debug macroPete Wyckoff, Dec 18, 2011
  6. Jonathan NiederDec 18, 2011
  7. Pete WyckoffDec 18, 2011
  8. 02/11 git-p4: test debug macroPete Wyckoff, Dec 18, 2011
  9. Luke DiamandDec 18, 2011
  10. Junio C HamanoDec 18, 2011
  11. Pete WyckoffDec 20, 2011
  12. 03/11 git-p4: clone does not use --git-dirPete Wyckoff, Dec 17, 2011
  13. 04/11 git-p4: test cloning with two dirs, clarify docPete Wyckoff, Dec 17, 2011
  14. 05/11 git-p4: document and test clone --branchPete Wyckoff, Dec 17, 2011
  15. 06/11 git-p4: honor --changesfile option and testPete Wyckoff, Dec 17, 2011
  16. 07/11 git-p4: document and test --import-localPete Wyckoff, Dec 17, 2011
  17. 08/11 git-p4: test --max-changesPete Wyckoff, Dec 17, 2011
  18. 09/11 git-p4: test --keep-pathPete Wyckoff, Dec 17, 2011
  19. 10/11 git-p4: test and document --use-client-specPete Wyckoff, Dec 17, 2011
  20. 11/11 git-p4: document and test submit optionsPete Wyckoff, Dec 17, 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.