mercurial/hg.py
changeset 7045 f82938c87b92
parent 7044 e51c0f41f271
child 7050 6788608627c4
equal deleted inserted replaced
7044:e51c0f41f271 7045:f82938c87b92
    18 
    18 
    19 def parseurl(url, revs):
    19 def parseurl(url, revs):
    20     '''parse url#branch, returning url, branch + revs'''
    20     '''parse url#branch, returning url, branch + revs'''
    21 
    21 
    22     if '#' not in url:
    22     if '#' not in url:
    23         return url, (revs or None), None
    23         return url, (revs or None), revs and revs[-1] or None
    24 
    24 
    25     url, rev = url.split('#', 1)
    25     url, branch = url.split('#', 1)
    26     return url, revs + [rev], rev
    26     checkout = revs and revs[-1] or branch
       
    27     return url, revs + [branch], checkout
    27 
    28 
    28 schemes = {
    29 schemes = {
    29     'bundle': bundlerepo,
    30     'bundle': bundlerepo,
    30     'file': _local,
    31     'file': _local,
    31     'http': httprepo,
    32     'http': httprepo,
   108         source, rev, checkout = parseurl(origsource, rev)
   109         source, rev, checkout = parseurl(origsource, rev)
   109         src_repo = repository(ui, source)
   110         src_repo = repository(ui, source)
   110     else:
   111     else:
   111         src_repo = source
   112         src_repo = source
   112         origsource = source = src_repo.url()
   113         origsource = source = src_repo.url()
   113         checkout = None
   114         checkout = rev and rev[-1] or None
   114 
   115 
   115     if dest is None:
   116     if dest is None:
   116         dest = defaultdest(source)
   117         dest = defaultdest(source)
   117         ui.status(_("destination directory: %s\n") % dest)
   118         ui.status(_("destination directory: %s\n") % dest)
   118 
   119 
   243             fp.write("default = %s\n" % abspath.replace('%', '%%'))
   244             fp.write("default = %s\n" % abspath.replace('%', '%%'))
   244             fp.close()
   245             fp.close()
   245 
   246 
   246             if update:
   247             if update:
   247                 dest_repo.ui.status(_("updating working directory\n"))
   248                 dest_repo.ui.status(_("updating working directory\n"))
   248                 if not checkout:
   249                 for test in (checkout, 'default', 'tip'):
   249                     try:
   250                     try:
   250                         checkout = dest_repo.lookup("default")
   251                         uprev = dest_repo.lookup(test)
       
   252                         break
   251                     except:
   253                     except:
   252                         checkout = dest_repo.changelog.tip()
   254                         continue
   253                 _update(dest_repo, checkout)
   255                 _update(dest_repo, uprev)
   254 
   256 
   255         return src_repo, dest_repo
   257         return src_repo, dest_repo
   256     finally:
   258     finally:
   257         del src_lock, dest_lock, dir_cleanup
   259         del src_lock, dest_lock, dir_cleanup
   258 
   260