mercurial/hg.py
changeset 14553 d976542986d2
parent 14552 3417954c42e9
child 14554 68db17047637
equal deleted inserted replaced
14552:3417954c42e9 14553:d976542986d2
   167                 break
   167                 break
   168             except error.RepoLookupError:
   168             except error.RepoLookupError:
   169                 continue
   169                 continue
   170         _update(r, uprev)
   170         _update(r, uprev)
   171 
   171 
   172 def clone(ui, source, dest=None, pull=False, rev=None, update=True,
   172 def clone(ui, opts, source, dest=None, pull=False, rev=None, update=True,
   173           stream=False, branch=None):
   173           stream=False, branch=None):
   174     """Make a copy of an existing repository.
   174     """Make a copy of an existing repository.
   175 
   175 
   176     Create a copy of an existing repository in a new directory.  The
   176     Create a copy of an existing repository in a new directory.  The
   177     source and destination are URLs, as passed to the repository
   177     source and destination are URLs, as passed to the repository
   207     """
   207     """
   208 
   208 
   209     if isinstance(source, str):
   209     if isinstance(source, str):
   210         origsource = ui.expandpath(source)
   210         origsource = ui.expandpath(source)
   211         source, branch = parseurl(origsource, branch)
   211         source, branch = parseurl(origsource, branch)
   212         srcrepo = repository(ui, source)
   212         srcrepo = repository(remoteui(ui, opts), source)
   213     else:
   213     else:
   214         srcrepo = source
   214         srcrepo = source
   215         branch = (None, branch or [])
   215         branch = (None, branch or [])
   216         origsource = source = srcrepo.url()
   216         origsource = source = srcrepo.url()
   217     rev, checkout = addbranchrevs(srcrepo, srcrepo, branch, rev)
   217     rev, checkout = addbranchrevs(srcrepo, srcrepo, branch, rev)
   301             else:
   301             else:
   302                 ui.debug("copied %d files\n" % num)
   302                 ui.debug("copied %d files\n" % num)
   303 
   303 
   304             # we need to re-init the repo after manually copying the data
   304             # we need to re-init the repo after manually copying the data
   305             # into it
   305             # into it
   306             destrepo = repository(ui, dest)
   306             destrepo = repository(remoteui(ui, opts), dest)
   307             srcrepo.hook('outgoing', source='clone',
   307             srcrepo.hook('outgoing', source='clone',
   308                           node=node.hex(node.nullid))
   308                           node=node.hex(node.nullid))
   309         else:
   309         else:
   310             try:
   310             try:
   311                 destrepo = repository(ui, dest, create=True)
   311                 destrepo = repository(remoteui(ui, opts), dest, create=True)
   312             except OSError, inst:
   312             except OSError, inst:
   313                 if inst.errno == errno.EEXIST:
   313                 if inst.errno == errno.EEXIST:
   314                     dircleanup.close()
   314                     dircleanup.close()
   315                     raise util.Abort(_("destination '%s' already exists")
   315                     raise util.Abort(_("destination '%s' already exists")
   316                                      % dest)
   316                                      % dest)