Mercurial > hg-stable
changeset 19129:bd19587a3347 stable
revert: ensure that copies and renames are honored (issue3920)
Previously, we restored the states of files, but not the additional
information the dirstate uses to track copies and renames.
author | Bryan O'Sullivan <bryano@fb.com> |
---|---|
date | Fri, 03 May 2013 12:40:17 -0700 |
parents | f4930b533d55 |
children | 70f0d1da36b0 af3b651505e2 |
files | mercurial/cmdutil.py tests/test-revert.t |
diffstat | 2 files changed, 30 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/cmdutil.py Fri May 03 09:44:50 2013 -0700 +++ b/mercurial/cmdutil.py Fri May 03 12:40:17 2013 -0700 @@ -2055,6 +2055,12 @@ checkout(f) normal(f) + copied = copies.pathcopies(repo[parent], ctx) + + for f in add[0] + undelete[0] + revert[0]: + if f in copied: + repo.dirstate.copy(copied[f], f) + if targetsubs: # Revert the subrepos on the revert list for sub in targetsubs:
--- a/tests/test-revert.t Fri May 03 09:44:50 2013 -0700 +++ b/tests/test-revert.t Fri May 03 12:40:17 2013 -0700 @@ -275,4 +275,28 @@ $ hg revert --no-backup ignored removed $ hg st -mardi +someone set up us the copies + + $ rm .hgignore + $ hg update -C + 0 files updated, 0 files merged, 0 files removed, 0 files unresolved + $ hg mv ignored allyour + $ hg copy removed base + $ hg commit -m rename + +copies and renames, you have no chance to survive make your time (issue3920) + + $ hg update '.^' + 1 files updated, 0 files merged, 2 files removed, 0 files unresolved + $ hg revert -rtip -a + adding allyour + adding base + removing ignored + $ hg status -C + A allyour + ignored + A base + removed + R ignored + $ cd ..