Commit 6e6324d2 authored by Laurent Charignon's avatar Laurent Charignon

revert: fix edition of newly added file during --interactive

Before this patch: editing hunks of newly added file when performing a revert
--interactive had no effect: the edits were discarded.

After this patch, the edits are taken into account.
parent f37a69ec3f47
......@@ -3123,6 +3123,7 @@ def _performrevert(repo, parents, ctx, actions, interactive=False):
else:
normal = repo.dirstate.normal
newlyaddedandmodifiedfiles = set()
if interactive:
# Prompt the user for changes to revert
torevert = [repo.wjoin(f) for f in actions['revert'][0]]
......@@ -3137,6 +3138,7 @@ def _performrevert(repo, parents, ctx, actions, interactive=False):
except patch.PatchError, err:
raise util.Abort(_('error parsing patch: %s') % err)
newlyaddedandmodifiedfiles = newandmodified(chunks, originalchunks)
# Apply changes
fp = cStringIO.StringIO()
for c in chunks:
......@@ -3160,8 +3162,10 @@ def _performrevert(repo, parents, ctx, actions, interactive=False):
repo.dirstate.normallookup(f)
for f in actions['add'][0]:
checkout(f)
repo.dirstate.add(f)
# Don't checkout modified files, they are already created by the diff
if f not in newlyaddedandmodifiedfiles:
checkout(f)
repo.dirstate.add(f)
normal = repo.dirstate.normallookup
if node == parent and p2 == nullid:
......
......@@ -270,3 +270,53 @@ Test that --interactive lift the need for --all
3
4
5
$ rm f.orig
$ hg update -C .
3 files updated, 0 files merged, 0 files removed, 0 files unresolved
Check editing files newly added by a revert
1) Create a dummy editor changing 1 to 42
$ cat > $TESTTMP/editor.sh << '__EOF__'
> cat "$1" | sed "s/1/42/g" > tt
> mv tt "$1"
> __EOF__
2) Remove f
$ hg rm f
$ hg commit -m "remove f"
3) Do another commit on top
$ touch k; hg add k
$ hg commit -m "add k"
$ hg st
4) Use interactive revert to recover f and change it on the fly
$ HGEDITOR="\"sh\" \"\${TESTTMP}/editor.sh\"" PRINTHUNK="YES" hg revert -i -r ".^^" <<EOF
> y
> e
> EOF
adding f
removing k
diff --git a/f b/f
new file mode 100644
examine changes to 'f'? [Ynesfdaq?] y
@@ -0,0 +1,7 @@
+a
+1
+2
+3
+4
+5
+b
record this change to 'f'? [Ynesfdaq?] e
$ cat f
a
42
2
3
4
5
b
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment