mirror of
https://github.com/facebook/sapling.git
synced 2024-10-07 23:38:50 +03:00
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:
parent
b117e44867
commit
7062c2db6e
@ -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
|
||||
|
@ -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()
|
||||
|
Loading…
Reference in New Issue
Block a user