diff hgext/schemes.py @ 15609:8f4bad72d8b1 stable

util: fix url.__str__() for windows file URLs Before: >>> str(url('file:///c:/tmp/foo/bar')) 'file:c%3C/tmp/foo/bar' After: >>> str(url('file:///c:/tmp/foo/bar')) 'file:///c%3C/tmp/foo/bar' The previous behaviour had no effect on mercurial itself (clone command for instance) because we fortunately called .localpath() on the parsed URL. hgsubversion was not so lucky and cloning a local subversion repository on Windows no longer worked on the default branch (it works on stable because de7e2fba4326 defeats the hasdriveletter() test in url class). I do not know if the %3C is correct or not but svn accepts file:// URLs containing it. Mads fixed it in de7e2fba4326, so we can always backport should the need arise.
author Patrick Mezard <pmezard@gmail.com>
date Sun, 04 Dec 2011 18:22:25 +0100
parents 6e631c24c6d9
children 38caf405d010
line wrap: on
line diff
--- a/hgext/schemes.py	Fri Dec 02 21:38:57 2011 -0200
+++ b/hgext/schemes.py	Sun Dec 04 18:22:25 2011 +0100
@@ -72,9 +72,10 @@
         return hg._peerlookup(url).instance(ui, url, create)
 
 def hasdriveletter(orig, path):
-    for scheme in schemes:
-        if path.startswith(scheme + ':'):
-            return False
+    if path:
+        for scheme in schemes:
+            if path.startswith(scheme + ':'):
+                return False
     return orig(path)
 
 schemes = {