mercurial/util.py
changeset 4232 0d51eb296fb9
parent 4195 b5d1eaade333
parent 4230 c93562fb12cc
child 4237 da6b14877195
equal deleted inserted replaced
4224:2a8b6d78d7ee 4232:0d51eb296fb9
   323             res += re.escape(c)
   323             res += re.escape(c)
   324     return head + res + tail
   324     return head + res + tail
   325 
   325 
   326 _globchars = {'[': 1, '{': 1, '*': 1, '?': 1}
   326 _globchars = {'[': 1, '{': 1, '*': 1, '?': 1}
   327 
   327 
   328 def pathto(n1, n2):
   328 def pathto(root, n1, n2):
   329     '''return the relative path from one place to another.
   329     '''return the relative path from one place to another.
       
   330     root should use os.sep to separate directories
   330     n1 should use os.sep to separate directories
   331     n1 should use os.sep to separate directories
   331     n2 should use "/" to separate directories
   332     n2 should use "/" to separate directories
   332     returns an os.sep-separated path.
   333     returns an os.sep-separated path.
       
   334 
       
   335     If n1 is a relative path, it's assumed it's
       
   336     relative to root.
       
   337     n2 should always be relative to root.
   333     '''
   338     '''
   334     if not n1: return localpath(n2)
   339     if not n1: return localpath(n2)
       
   340     if os.path.isabs(n1):
       
   341         if os.path.splitdrive(root)[0] != os.path.splitdrive(n1)[0]:
       
   342             return os.path.join(root, localpath(n2))
       
   343         n2 = '/'.join((pconvert(root), n2))
   335     a, b = n1.split(os.sep), n2.split('/')
   344     a, b = n1.split(os.sep), n2.split('/')
   336     a.reverse()
   345     a.reverse()
   337     b.reverse()
   346     b.reverse()
   338     while a and b and a[-1] == b[-1]:
   347     while a and b and a[-1] == b[-1]:
   339         a.pop()
   348         a.pop()