diff mercurial/cmdutil.py @ 14518:a67e866f46f9

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.
author Adrian Buehlmann <adrian@cadifra.com>
date Thu, 02 Jun 2011 00:33:33 +0200
parents 5b48ad1e7f1a
children 217b7d83afc3
line wrap: on
line diff
--- a/mercurial/cmdutil.py	Thu Jun 02 19:43:17 2011 +0200
+++ b/mercurial/cmdutil.py	Thu Jun 02 00:33:33 2011 +0200
@@ -281,9 +281,11 @@
                 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 @@
         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