Commit 32bf538a authored by Laurent Charignon's avatar Laurent Charignon

revert: fix --interactive on local modification (issue4576)

We were moving files during the backup phase and it was incompatible with the
way record/crecord is working
parent 61a99993f8a7
......@@ -2810,6 +2810,7 @@ def revert(ui, repo, ctx, parents, *pats, **opts):
## filling of the `names` mapping
# walk dirstate to fill `names`
interactive = opts.get('interactive', False)
wctx = repo[None]
m = scmutil.match(wctx, pats, opts)
if not m.always():
......@@ -3031,7 +3032,10 @@ def revert(ui, repo, ctx, parents, *pats, **opts):
ui.note(_('saving current version of %s as %s\n') %
(rel, bakname))
if not opts.get('dry_run'):
util.rename(target, bakname)
if interactive:
util.copyfile(target, bakname)
else:
util.rename(target, bakname)
if ui.verbose or not exact:
if not isinstance(msg, basestring):
msg = msg(abs)
......@@ -3044,7 +3048,6 @@ def revert(ui, repo, ctx, parents, *pats, **opts):
if not opts.get('dry_run'):
needdata = ('revert', 'add', 'undelete')
_revertprefetch(repo, ctx, *[actions[name][0] for name in needdata])
interactive = opts.get('interactive', False)
_performrevert(repo, parents, ctx, actions, interactive)
# get the list of subrepos that must be reverted
......
......@@ -205,3 +205,53 @@ Revert interactive tests
4
5
f
$ hg st
M f
M folder1/g
R folder1/i
$ hg revert --interactive f << EOF
> y
> y
> n
> n
> EOF
diff -r 59dd6e4ab63a f
2 hunks, 2 lines changed
examine changes to 'f'? [Ynesfdaq?] y
@@ -1,5 +1,6 @@
+a
1
2
3
4
5
record change 1/2 to 'f'? [Ynesfdaq?] y
@@ -1,5 +2,6 @@
1
2
3
4
5
+b
record change 2/2 to 'f'? [Ynesfdaq?] n
$ hg st
M f
M folder1/g
R folder1/i
? f.orig
$ cat f
a
1
2
3
4
5
$ cat f.orig
1
2
3
4
5
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