mercurial/cmdutil.py
changeset 11303 a1aad8333864
parent 11290 8c6c7f6347a3
child 11405 bf5d88c466e0
equal deleted inserted replaced
11302:e1dde7363601 11303:a1aad8333864
   309                                  '(%d%% similar)\n') %
   309                                  '(%d%% similar)\n') %
   310                                (m.rel(old), m.rel(new), score * 100))
   310                                (m.rel(old), m.rel(new), score * 100))
   311             copies[new] = old
   311             copies[new] = old
   312 
   312 
   313     if not dry_run:
   313     if not dry_run:
       
   314         wctx = repo[None]
   314         wlock = repo.wlock()
   315         wlock = repo.wlock()
   315         try:
   316         try:
   316             repo.remove(deleted)
   317             wctx.remove(deleted)
   317             repo.add(unknown)
   318             wctx.add(unknown)
   318             for new, old in copies.iteritems():
   319             for new, old in copies.iteritems():
   319                 repo.copy(old, new)
   320                 wctx.copy(old, new)
   320         finally:
   321         finally:
   321             wlock.release()
   322             wlock.release()
   322 
   323 
   323 def copy(ui, repo, pats, opts, rename=False):
   324 def copy(ui, repo, pats, opts, rename=False):
   324     # called with the repo lock held
   325     # called with the repo lock held
   327     # ossep => pathname that uses os.sep to separate directories
   328     # ossep => pathname that uses os.sep to separate directories
   328     cwd = repo.getcwd()
   329     cwd = repo.getcwd()
   329     targets = {}
   330     targets = {}
   330     after = opts.get("after")
   331     after = opts.get("after")
   331     dryrun = opts.get("dry_run")
   332     dryrun = opts.get("dry_run")
       
   333     wctx = repo[None]
   332 
   334 
   333     def walkpat(pat):
   335     def walkpat(pat):
   334         srcs = []
   336         srcs = []
   335         badstates = after and '?' or '?r'
   337         badstates = after and '?' or '?r'
   336         m = match(repo, [pat], opts, globbed=True)
   338         m = match(repo, [pat], opts, globbed=True)
   419                 if not ui.quiet:
   421                 if not ui.quiet:
   420                     ui.warn(_("%s has not been committed yet, so no copy "
   422                     ui.warn(_("%s has not been committed yet, so no copy "
   421                               "data will be stored for %s.\n")
   423                               "data will be stored for %s.\n")
   422                             % (repo.pathto(origsrc, cwd), reltarget))
   424                             % (repo.pathto(origsrc, cwd), reltarget))
   423                 if repo.dirstate[abstarget] in '?r' and not dryrun:
   425                 if repo.dirstate[abstarget] in '?r' and not dryrun:
   424                     repo.add([abstarget])
   426                     wctx.add([abstarget])
   425             elif not dryrun:
   427             elif not dryrun:
   426                 repo.copy(origsrc, abstarget)
   428                 wctx.copy(origsrc, abstarget)
   427 
   429 
   428         if rename and not dryrun:
   430         if rename and not dryrun:
   429             repo.remove([abssrc], not after)
   431             wctx.remove([abssrc], not after)
   430 
   432 
   431     # pat: ossep
   433     # pat: ossep
   432     # dest ossep
   434     # dest ossep
   433     # srcs: list of (hgsep, hgsep, ossep, bool)
   435     # srcs: list of (hgsep, hgsep, ossep, bool)
   434     # return: function that takes hgsep and returns ossep
   436     # return: function that takes hgsep and returns ossep