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

Re: [PATCH] git-p4: Fixed handling of file names with spaces

From
Jerzy Kozera <jerzy.kozera@gmail.com>
Date
Jan 14, 2011, 22:45 UTC
Message-ID
<A0F152FE-C659-4F9B-9625-505AA5DAF942@gmail.com>
In-Reply-To
<m28vyncffu.fsf@igel.home>
On 14 Jan 2011, at 22:01, Andreas Schwab wrote:
> Can those file names also include a double quote or a backquote or a
> dollar sign?

Double quote and backquote get escaped by git so they are not a problem: $ git diff-tree -r HEAD^ HEAD :000000 100644 0000000000000000000000000000000000000000 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 A "\" \\ $"

But as you can see above, the dollar sign remains intact, so it needs to be handled as well - patch below takes it into account.

Thanks, Jerzy

---
 contrib/fast-import/git-p4 |    8 ++++----
 1 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/contrib/fast-import/git-p4 b/contrib/fast-import/git-p4
index 04ce7e3..d930908 100755
--- a/contrib/fast-import/git-p4
+++ b/contrib/fast-import/git-p4
@@ -47,7 +47,7 @@ def p4_build_cmd(cmd):
     real_cmd += "%s" % (cmd)
     if verbose:
         print real_cmd
-    return real_cmd
+    return real_cmd.replace('$', '\\$')
 
 def chdir(dir):
     if os.name == 'nt':
@@ -139,12 +139,12 @@ def setP4ExecBit(file, mode):
         if p4Type[-1] == "+":
             p4Type = p4Type[0:-1]
 
-    p4_system("reopen -t %s %s" % (p4Type, file))
+    p4_system("reopen -t %s \"%s\"" % (p4Type, file))
 
 def getP4OpenedType(file):
     # Returns the perforce file type for the given file.
 
-    result = p4_read_pipe("opened %s" % file)
+    result = p4_read_pipe("opened \"%s\"" % file)
     match = re.match(".*\((.+)\)\r?$", result)
     if match:
         return match.group(1)
@@ -666,7 +666,7 @@ class P4Submit(Command):
                 for f in editedFiles:
                     p4_system("revert \"%s\"" % f);
                 for f in filesToAdd:
-                    system("rm %s" %f)
+                    system("rm \"%s\"" % f.replace('$', '\\$'))
                 return
             elif response == "a":
                 os.system(applyPatchCmd)
-- 
1.7.1
Previous: Andreas SchwabNext: Pete Wyckoff
Message 7 of 8 in “git-p4: Fix 'p4 opened' in git-p4 for names with spaces”
  1. git-p4: Fix 'p4 opened' in git-p4 for names with spacesJerzy Kozera, Dec 14, 2010
  2. git-p4: Fix 'p4 opened' in git-p4 for names with spacesJerzy Kozera, Dec 14, 2010
  3. Junio C HamanoDec 14, 2010
  4. Reece DunnDec 14, 2010
  5. git-p4: Fixed handling of file names with spacesJerzy Kozera, Jan 13, 2011
  6. Andreas SchwabJan 14, 2011
  7. Jerzy KozeraJan 14, 2011
  8. Pete WyckoffJan 15, 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.