# HG changeset patch # User Adrian Buehlmann # Date 2011-06-01 22:33:33 # Node ID a67e866f46f9919a963afb4e4f1bb4a2c56a3c42 # Parent 5a931246afc5fd8eae2620c170a3f9cf4f80169e workingctx: eliminate remove function Inlining it into it's last remaining call place in cmdutil.copy. Note that cmdutil.copy is called with the wlock already held, so no additional locking is needed to call util.unlinkpath. We do not need to wrap the util.unlinkpath call into a try block, because at that point we already know whether abssrc exists or not -- thanks to the preceding util.copyfile call. Adding a new local 'srcexists' in cmdutil.copy for that purpose. diff --git a/mercurial/cmdutil.py b/mercurial/cmdutil.py --- a/mercurial/cmdutil.py +++ b/mercurial/cmdutil.py @@ -281,9 +281,11 @@ def copy(ui, repo, pats, opts, rename=Fa if not os.path.isdir(targetdir): os.makedirs(targetdir) util.copyfile(src, target) + srcexists = True except IOError, inst: if inst.errno == errno.ENOENT: ui.warn(_('%s: deleted in working copy\n') % relsrc) + srcexists = False else: ui.warn(_('%s: cannot copy - %s\n') % (relsrc, inst.strerror)) @@ -301,7 +303,9 @@ def copy(ui, repo, pats, opts, rename=Fa scmutil.dirstatecopy(ui, repo, wctx, abssrc, abstarget, dryrun=dryrun, cwd=cwd) if rename and not dryrun: - wctx.remove([abssrc], not after) + if not after and srcexists: + util.unlinkpath(repo.wjoin(abssrc)) + wctx.forget([abssrc]) # pat: ossep # dest ossep diff --git a/mercurial/context.py b/mercurial/context.py --- a/mercurial/context.py +++ b/mercurial/context.py @@ -853,20 +853,6 @@ class workingctx(changectx): *[p.rev() for p in self._parents]): yield changectx(self._repo, a) - def remove(self, list, unlink=False): - wlock = self._repo.wlock() - try: - if unlink: - for f in list: - try: - util.unlinkpath(self._repo.wjoin(f)) - except OSError, inst: - if inst.errno != errno.ENOENT: - raise - self.forget(list) - finally: - wlock.release() - def undelete(self, list): pctxs = self.parents() wlock = self._repo.wlock()