url: parse fragments first (issue2997) stable
authorMatt Mackall <mpm@selenic.com>
Sat, 10 Sep 2011 17:49:19 -0500
branchstable
changeset 15074 64fbd0de9773
parent 15073 19071b04c9c1
child 15075 77325c92db95
url: parse fragments first (issue2997)
mercurial/util.py
--- a/mercurial/util.py	Fri Sep 09 14:41:22 2011 -0500
+++ b/mercurial/util.py	Sat Sep 10 17:49:19 2011 -0500
@@ -1434,6 +1434,8 @@
     <url path: 'c:\\foo\\bar'>
     >>> url(r'\\blah\blah\blah')
     <url path: '\\\\blah\\blah\\blah'>
+    >>> url(r'\\blah\blah\blah#baz')
+    <url path: '\\\\blah\\blah\\blah', fragment: 'baz'>
 
     Authentication credentials:
 
@@ -1462,6 +1464,11 @@
         self._hostport = ''
         self._origpath = path
 
+        if parsefragment and '#' in path:
+            path, self.fragment = path.split('#', 1)
+            if not path:
+                path = None
+
         # special case for Windows drive letters and UNC paths
         if hasdriveletter(path) or path.startswith(r'\\'):
             self.path = path
@@ -1489,10 +1496,6 @@
                 self.path = ''
                 return
         else:
-            if parsefragment and '#' in path:
-                path, self.fragment = path.split('#', 1)
-                if not path:
-                    path = None
             if self._localpath:
                 self.path = path
                 return