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

[PATCH 1/4] git p4: bring back files in deleted client directory

From
PWPete Wyckoff <pw@padd.com>
Date
Apr 30, 2012, 00:57 UTC
Message-ID
<1335747437-24034-2-git-send-email-pw@padd.com>
In-Reply-To
<1335747437-24034-1-git-send-email-pw@padd.com>

The code to auto-create the client directory, added in 0591cfa (git-p4: ensure submit clientPath exists before chdir, 2011-12-09), works when the client directory never existed.

But if the directory is summarily removed without telling p4, the sync operation will not bring back all the files. Always do "sync -f" if the client directory is newly created.

Reported-by: Gary Gibbons <ggibbons@perforce.com>
Signed-off-by: Pete Wyckoff <pw@padd.com>
---
 git-p4.py                |   12 +++++++++---
 t/t9807-git-p4-submit.sh |    7 +++++--
 2 files changed, 14 insertions(+), 5 deletions(-)
diff --git a/git-p4.py b/git-p4.py
index f910d5a..a2eba5d 100755
--- a/git-p4.py
+++ b/git-p4.py
@@ -133,8 +133,8 @@ def p4_system(cmd):
 def p4_integrate(src, dest):
     p4_system(["integrate", "-Dt", src, dest])
 
-def p4_sync(path):
-    p4_system(["sync", path])
+def p4_sync(f, *options):
+    p4_system(["sync"] + list(options) + [f])
 
 def p4_add(f):
     p4_system(["add", f])
@@ -1279,12 +1279,18 @@ class P4Submit(Command, P4UserMap):
         self.oldWorkingDirectory = os.getcwd()
 
         # ensure the clientPath exists
+        new_client_dir = False
         if not os.path.exists(self.clientPath):
+            new_client_dir = True
             os.makedirs(self.clientPath)
 
         chdir(self.clientPath)
         print "Synchronizing p4 checkout..."
-        p4_sync("...")
+        if new_client_dir:
+            # old one was destroyed, and maybe nobody told p4
+            p4_sync("...", "-f")
+        else:
+            p4_sync("...")
         self.check()
 
         commits = []
diff --git a/t/t9807-git-p4-submit.sh b/t/t9807-git-p4-submit.sh
index 1541716..2d7dc27 100755
--- a/t/t9807-git-p4-submit.sh
+++ b/t/t9807-git-p4-submit.sh
@@ -28,6 +28,11 @@ test_expect_success 'submit with no client dir' '
 		rm -rf "$cli" &&
 		git config git-p4.skipSubmitEdit true &&
 		git p4 submit
+	) &&
+	(
+		cd "$cli" &&
+		test_path_is_file file1 &&
+		test_path_is_file file2
 	)
 '
 
@@ -44,7 +49,6 @@ test_expect_success 'submit --origin' '
 	) &&
 	(
 		cd "$cli" &&
-		p4 sync &&
 		test_path_is_missing "file3.t" &&
 		test_path_is_file "file4.t"
 	)
@@ -79,7 +83,6 @@ test_expect_success 'submit with master branch name from argv' '
 	) &&
 	(
 		cd "$cli" &&
-		p4 sync &&
 		test_path_is_file "file6.t" &&
 		test_path_is_missing "file7.t"
 	)
-- 
1.7.10.366.g90ade
Previous: Pete WyckoffNext: Luke Diamand
Message 2 of 10 in “git p4 submit fixes”
  1. 0/4 git p4 submit fixesPete Wyckoff, Apr 30, 2012
  2. 1/4 git p4: bring back files in deleted client directoryPete Wyckoff, Apr 30, 2012
  3. Luke DiamandApr 30, 2012
  4. Pete WyckoffApr 30, 2012
  5. Luke DiamandApr 30, 2012
  6. Pete WyckoffApr 30, 2012
  7. 2/4 git p4: test submitPete Wyckoff, Apr 30, 2012
  8. 3/4 git p4: fix writable file after rename or copyPete Wyckoff, Apr 30, 2012
  9. 4/4 git p4: submit files with wildcardsPete Wyckoff, Apr 30, 2012
  10. Luke DiamandApr 30, 2012

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.