[PATCH] Fix qpush fail on windows at drive root
Alexis S. L. Carvalho
alexis at cecm.usp.br
Tue Feb 13 20:26:59 UTC 2007
Thus spake Andrei Vermel:
> Here's hopefully a safer path tweak.
This will still mangle some filenames on Unix (but not as many...). I
think the problem is in the util.shellquote function. Can you test this
patch?
(I'm not even sure the URL below is the relevant bit of documentation
for this...)
regexps that deal with backslashes == not nice
Alexis
diff -r ef14fdb675da mercurial/util.py
--- a/mercurial/util.py Tue Feb 13 10:02:07 2007 -0200
+++ b/mercurial/util.py Tue Feb 13 18:23:24 2007 -0200
@@ -795,8 +795,20 @@ if os.name == 'nt':
def samestat(s1, s2):
return False
+ # - if a sequence of N backslashes precedes a double quote,
+ # turn it into a sequence of 2N backslashes
+ # - add a backslash before every double quote
+ # - if the string ends with a sequence of N backslashes,
+ # turn it into a sequence of 2N backslashes
+ # - surround the result with double quotes
+ # See http://msdn2.microsoft.com/en-us/library/a1y7w461.aspx for
+ # details.
+ _quotere = None
def shellquote(s):
- return '"%s"' % s.replace('"', '\\"')
+ global _quotere
+ if _quotere is None:
+ _quotere = re.compile(r'(\\*)("|\\$)')
+ return '"%s"' % _quotere.sub(r'\1\1\\\2', s)
def explain_exit(code):
return _("exited with status %d") % code, code
More information about the Mercurial-devel
mailing list