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.
This commit is contained in:
Adrian Buehlmann 2011-06-02 00:33:33 +02:00
parent b117e44867
commit 7062c2db6e
2 changed files with 5 additions and 15 deletions

View File

@ -281,9 +281,11 @@ def copy(ui, repo, pats, opts, rename=False):
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=False):
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

View File

@ -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()