Mercurial > hg
changeset 24857:d8505bfe4825 stable
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.
author | Matt Harbison <matt_harbison@yahoo.com> |
---|---|
date | Sat, 25 Apr 2015 23:54:31 -0400 |
parents | 5c1364b7e5ac |
children | a99931201d1b |
files | mercurial/cmdutil.py tests/test-casefolding.t |
diffstat | 2 files changed, 21 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- 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 ..