revert: restore the ability to revert across case only renames (
issue4481)
This regressed in
5e16fe6fdd32, in what looks like an unrelated change.
It seems sufficient to pass 'ignoremissing=True', but the restored try/except
has been there for six years since
41bb88cb913e, so this seems safer for now.
Note that renaming directories in the filename doesn't appear to work- not sure
if this would end up throwing a different type of error when that is fixed.
--- a/mercurial/cmdutil.py Mon Apr 27 11:11:26 2015 -0500
+++ b/mercurial/cmdutil.py Sat Apr 25 23:54:31 2015 -0400
@@ -3084,7 +3084,10 @@
repo.dirstate.drop(f)
for f in actions['remove'][0]:
audit_path(f)
- util.unlinkpath(repo.wjoin(f))
+ try:
+ util.unlinkpath(repo.wjoin(f))
+ except OSError:
+ pass
repo.dirstate.remove(f)
for f in actions['drop'][0]:
audit_path(f)
--- a/tests/test-casefolding.t Mon Apr 27 11:11:26 2015 -0500
+++ b/tests/test-casefolding.t Sat Apr 25 23:54:31 2015 -0400
@@ -153,6 +153,23 @@
$ mkdir -p a/B/c/D
$ echo e > a/B/c/D/e
$ hg add a/B/c/D/e
+ $ hg ci -m 'add e'
+
+issue 4481: revert across case only renames
+ $ hg mv a/B/c/D/e a/B/c/d/E
+ $ hg ci -m "uppercase E"
+ $ echo 'foo' > a/B/c/D/E
+ $ hg ci -m 'e content change'
+ $ hg revert --all -r 0
+ removing a\B\c\D\E
+ adding a\B\c\D\e
+ $ find * | sort
+ a
+ a/B
+ a/B/c
+ a/B/c/D
+ a/B/c/D/e
+ a/B/c/D/e.orig
$ cd ..