diff --git a/mercurial/cmdutil.py b/mercurial/cmdutil.py --- a/mercurial/cmdutil.py +++ b/mercurial/cmdutil.py @@ -3021,7 +3021,8 @@ if ui.verbose or not exact: if not isinstance(msg, bytes): msg = msg(abs) - ui.status(msg % rel) + if opts.get('dry_run'): + ui.status(msg % rel) elif exact: ui.warn(msg % rel) break @@ -3077,10 +3078,12 @@ choice = repo.ui.promptchoice( _("forget added file %s (Yn)?$$ &Yes $$ &No") % f) if choice == 0: + repo.ui.status(_("%s") % (actions['forget'][1] % f)) repo.dirstate.drop(f) else: excluded_files.append(f) else: + repo.ui.status(_("%s") % (actions['forget'][1] % f)) repo.dirstate.drop(f) for f in actions['remove'][0]: audit_path(f) @@ -3088,13 +3091,16 @@ choice = repo.ui.promptchoice( _("remove added file %s (Yn)?$$ &Yes $$ &No") % f) if choice == 0: + repo.ui.status(_("%s") % (actions['remove'][1] % f)) doremove(f) else: excluded_files.append(f) else: + repo.ui.status(_("%s") % (actions['remove'][1] % f)) doremove(f) for f in actions['drop'][0]: audit_path(f) + repo.ui.status(_("%s") % (actions['drop'][1] % f)) repo.dirstate.remove(f) normal = None @@ -3141,14 +3147,21 @@ tobackup = set() # Apply changes fp = stringio() + # `fnames` keep track of filenames for which we have initiated changes, + # to make sure that we print status msg only once for a file. + fnames = [] for c in chunks: - # Create a backup file only if this hunk should be backed up - if ishunk(c) and c.header.filename() in tobackup: + if ishunk(c): abs = c.header.filename() - target = repo.wjoin(abs) - bakname = scmutil.origpath(repo.ui, repo, m.rel(abs)) - util.copyfile(target, bakname) - tobackup.remove(abs) + if abs not in fnames: + fnames.append(abs) + repo.ui.status(_("%s") % (actions['revert'][1] % abs)) + # Create a backup file only if this hunk should be backed up + if c.header.filename() in tobackup: + target = repo.wjoin(abs) + bakname = scmutil.origpath(repo.ui, repo, m.rel(abs)) + util.copyfile(target, bakname) + tobackup.remove(abs) c.write(fp) dopatch = fp.tell() fp.seek(0) @@ -3160,6 +3173,7 @@ del fp else: for f in actions['revert'][0]: + repo.ui.status(_("%s") % (actions['revert'][1] % f)) checkout(f) if normal: normal(f) @@ -3168,6 +3182,7 @@ # Don't checkout modified files, they are already created by the diff if f not in newlyaddedandmodifiedfiles: checkout(f) + repo.ui.status(_("%s") % (actions['add'][1] % f)) repo.dirstate.add(f) normal = repo.dirstate.normallookup @@ -3175,6 +3190,7 @@ normal = repo.dirstate.normal for f in actions['undelete'][0]: checkout(f) + repo.ui.status(_("%s") % (actions['undelete'][1] % f)) normal(f) copied = copies.pathcopies(repo[parent], ctx) diff --git a/tests/test-revert-interactive.t b/tests/test-revert-interactive.t --- a/tests/test-revert-interactive.t +++ b/tests/test-revert-interactive.t @@ -51,11 +51,8 @@ > n > n > EOF - reverting f - reverting folder1/g + remove added file folder1/i (Yn)? y removing folder1/i - reverting folder2/h - remove added file folder1/i (Yn)? y diff --git a/f b/f 2 hunks, 2 lines changed examine changes to 'f'? [Ynesfdaq?] y @@ -115,6 +112,8 @@ 2 hunks, 2 lines changed examine changes to 'folder2/h'? [Ynesfdaq?] n + reverting folder1/g + reverting f $ cat f 1 2 @@ -140,8 +139,6 @@ Test that --interactive lift the need for --all $ echo q | hg revert -i -r 2 - reverting folder1/g - reverting folder2/h diff --git a/folder1/g b/folder1/g 1 hunks, 1 lines changed examine changes to 'folder1/g'? [Ynesfdaq?] q @@ -180,6 +177,7 @@ -d apply this change to 'folder1/g'? [Ynesfdaq?] y + reverting folder1/g $ ls folder1/ g >>> open('folder1/g', 'wb').write(b"1\n2\n3\n4\n5\nd\n") and None @@ -197,10 +195,6 @@ > n > n > EOF - reverting f - reverting folder1/g - removing folder1/i - reverting folder2/h remove added file folder1/i (Yn)? n diff --git a/f b/f 2 hunks, 2 lines changed @@ -250,6 +244,8 @@ 2 hunks, 2 lines changed examine changes to 'folder2/h'? [Ynesfdaq?] n + reverting folder1/g + reverting f $ cat f 1 2 @@ -314,6 +310,7 @@ -b discard change 2/2 to 'f'? [Ynesfdaq?] n + reverting f $ hg st M f M folder1/g @@ -354,7 +351,6 @@ > y > e > EOF - reverting k diff --git a/k b/k 1 hunks, 2 lines changed examine changes to 'k'? [Ynesfdaq?] y @@ -365,6 +361,7 @@ +2 discard this change to 'k'? [Ynesfdaq?] e + reverting k $ cat k 42 @@ -378,15 +375,14 @@ $ hg revert -i < n > EOF - forgetting newfile forget added file newfile (Yn)? n $ hg status A newfile $ hg revert -i < y > EOF + forget added file newfile (Yn)? y forgetting newfile - forget added file newfile (Yn)? y $ hg status ? newfile @@ -406,7 +402,6 @@ > y > y > EOF - reverting a diff --git a/a b/a 1 hunks, 1 lines changed examine changes to 'a'? [Ynesfdaq?] y @@ -417,6 +412,7 @@ \ No newline at end of file apply this change to 'a'? [Ynesfdaq?] y + reverting a $ cat a 0 diff --git a/tests/test-revert.t b/tests/test-revert.t --- a/tests/test-revert.t +++ b/tests/test-revert.t @@ -41,6 +41,7 @@ revert removal of a file $ hg revert a + undeleting a $ hg status M c A b @@ -48,6 +49,7 @@ revert addition of a file $ hg revert b + forgetting b $ hg status M c ? b @@ -55,6 +57,7 @@ revert modification of a file (--no-backup) $ hg revert --no-backup c + reverting c $ hg status ? b @@ -129,9 +132,9 @@ ---------------------------------- $ hg revert --all -r0 - adding a + forgetting z removing d - forgetting z + adding a revert explicitly to parent (--rev) ----------------------------------- @@ -147,6 +150,7 @@ exact match are more silent $ hg revert -r0 a + adding a $ hg st a A a $ hg rm d @@ -214,6 +218,7 @@ > fakedirstatewritetime = $TESTDIR/fakedirstatewritetime.py > EOF $ hg revert -r 0 e + reverting e $ cat >> .hg/hgrc < [extensions] > fakedirstatewritetime = ! @@ -283,8 +288,8 @@ $ echo foo > newdir/newfile $ hg add newdir/newfile $ hg revert b newdir + forgetting newdir/newfile reverting b/b - forgetting newdir/newfile $ echo foobar > b/b $ hg revert . reverting b/b @@ -295,6 +300,8 @@ $ hg mv a newa $ hg revert newa + forgetting newa + undeleting a $ hg st a newa ? newa @@ -302,6 +309,8 @@ $ hg mv --force a b/b $ hg revert b/b + reverting b/b + undeleting a $ hg status a b/b $ cd .. @@ -349,6 +358,8 @@ -------------------------------------- $ hg revert --no-backup ignored removed + reverting ignored + undeleting removed $ hg st -mardi Reverting copy (issue3920) @@ -368,9 +379,9 @@ $ hg update '.^' 1 files updated, 0 files merged, 2 files removed, 0 files unresolved $ hg revert -rtip -a + removing ignored adding allyour adding base - removing ignored $ hg status -C A allyour ignored @@ -790,28 +801,28 @@ check revert output $ hg revert --all - undeleting content1_content1_content1-untracked - reverting content1_content1_content3-tracked - undeleting content1_content1_content3-untracked - reverting content1_content1_missing-tracked - undeleting content1_content1_missing-untracked - reverting content1_content2_content1-tracked - undeleting content1_content2_content1-untracked - undeleting content1_content2_content2-untracked - reverting content1_content2_content3-tracked - undeleting content1_content2_content3-untracked - reverting content1_content2_missing-tracked - undeleting content1_content2_missing-untracked forgetting content1_missing_content1-tracked forgetting content1_missing_content3-tracked forgetting content1_missing_missing-tracked - undeleting missing_content2_content2-untracked - reverting missing_content2_content3-tracked - undeleting missing_content2_content3-untracked - reverting missing_content2_missing-tracked - undeleting missing_content2_missing-untracked forgetting missing_missing_content3-tracked forgetting missing_missing_missing-tracked + reverting content1_content1_content3-tracked + reverting content1_content1_missing-tracked + reverting content1_content2_content1-tracked + reverting content1_content2_content3-tracked + reverting content1_content2_missing-tracked + reverting missing_content2_content3-tracked + reverting missing_content2_missing-tracked + undeleting content1_content1_content1-untracked + undeleting content1_content1_content3-untracked + undeleting content1_content1_missing-untracked + undeleting content1_content2_content1-untracked + undeleting content1_content2_content2-untracked + undeleting content1_content2_content3-untracked + undeleting content1_content2_missing-untracked + undeleting missing_content2_content2-untracked + undeleting missing_content2_content3-untracked + undeleting missing_content2_missing-untracked Compare resulting directory with revert target. @@ -847,28 +858,28 @@ check revert output $ hg revert --all --rev 'desc(base)' - undeleting content1_content1_content1-untracked - reverting content1_content1_content3-tracked - undeleting content1_content1_content3-untracked - reverting content1_content1_missing-tracked - undeleting content1_content1_missing-untracked - undeleting content1_content2_content1-untracked - reverting content1_content2_content2-tracked - undeleting content1_content2_content2-untracked - reverting content1_content2_content3-tracked - undeleting content1_content2_content3-untracked - reverting content1_content2_missing-tracked - undeleting content1_content2_missing-untracked - adding content1_missing_content1-untracked - reverting content1_missing_content3-tracked - adding content1_missing_content3-untracked - reverting content1_missing_missing-tracked - adding content1_missing_missing-untracked + forgetting missing_missing_content3-tracked + forgetting missing_missing_missing-tracked removing missing_content2_content2-tracked removing missing_content2_content3-tracked removing missing_content2_missing-tracked - forgetting missing_missing_content3-tracked - forgetting missing_missing_missing-tracked + reverting content1_content1_content3-tracked + reverting content1_content1_missing-tracked + reverting content1_content2_content2-tracked + reverting content1_content2_content3-tracked + reverting content1_content2_missing-tracked + reverting content1_missing_content3-tracked + reverting content1_missing_missing-tracked + adding content1_missing_content1-untracked + adding content1_missing_content3-untracked + adding content1_missing_missing-untracked + undeleting content1_content1_content1-untracked + undeleting content1_content1_content3-untracked + undeleting content1_content1_missing-untracked + undeleting content1_content2_content1-untracked + undeleting content1_content2_content2-untracked + undeleting content1_content2_content3-untracked + undeleting content1_content2_missing-untracked Compare resulting directory with revert target. @@ -911,43 +922,58 @@ no changes needed to content1_content1_content1-tracked ### revert for: content1_content1_content1-untracked + undeleting content1_content1_content1-untracked ### revert for: content1_content1_content3-tracked + reverting content1_content1_content3-tracked ### revert for: content1_content1_content3-untracked + undeleting content1_content1_content3-untracked ### revert for: content1_content1_missing-tracked + reverting content1_content1_missing-tracked ### revert for: content1_content1_missing-untracked + undeleting content1_content1_missing-untracked ### revert for: content1_content2_content1-tracked + reverting content1_content2_content1-tracked ### revert for: content1_content2_content1-untracked + undeleting content1_content2_content1-untracked ### revert for: content1_content2_content2-tracked no changes needed to content1_content2_content2-tracked ### revert for: content1_content2_content2-untracked + undeleting content1_content2_content2-untracked ### revert for: content1_content2_content3-tracked + reverting content1_content2_content3-tracked ### revert for: content1_content2_content3-untracked + undeleting content1_content2_content3-untracked ### revert for: content1_content2_missing-tracked + reverting content1_content2_missing-tracked ### revert for: content1_content2_missing-untracked + undeleting content1_content2_missing-untracked ### revert for: content1_missing_content1-tracked + forgetting content1_missing_content1-tracked ### revert for: content1_missing_content1-untracked file not managed: content1_missing_content1-untracked ### revert for: content1_missing_content3-tracked + forgetting content1_missing_content3-tracked ### revert for: content1_missing_content3-untracked file not managed: content1_missing_content3-untracked ### revert for: content1_missing_missing-tracked + forgetting content1_missing_missing-tracked ### revert for: content1_missing_missing-untracked content1_missing_missing-untracked: no such file in rev * (glob) @@ -956,21 +982,28 @@ no changes needed to missing_content2_content2-tracked ### revert for: missing_content2_content2-untracked + undeleting missing_content2_content2-untracked ### revert for: missing_content2_content3-tracked + reverting missing_content2_content3-tracked ### revert for: missing_content2_content3-untracked + undeleting missing_content2_content3-untracked ### revert for: missing_content2_missing-tracked + reverting missing_content2_missing-tracked ### revert for: missing_content2_missing-untracked + undeleting missing_content2_missing-untracked ### revert for: missing_missing_content3-tracked + forgetting missing_missing_content3-tracked ### revert for: missing_missing_content3-untracked file not managed: missing_missing_content3-untracked ### revert for: missing_missing_missing-tracked + forgetting missing_missing_missing-tracked ### revert for: missing_missing_missing-untracked missing_missing_missing-untracked: no such file in rev * (glob) @@ -1004,66 +1037,88 @@ no changes needed to content1_content1_content1-tracked ### revert for: content1_content1_content1-untracked + undeleting content1_content1_content1-untracked ### revert for: content1_content1_content3-tracked + reverting content1_content1_content3-tracked ### revert for: content1_content1_content3-untracked + undeleting content1_content1_content3-untracked ### revert for: content1_content1_missing-tracked + reverting content1_content1_missing-tracked ### revert for: content1_content1_missing-untracked + undeleting content1_content1_missing-untracked ### revert for: content1_content2_content1-tracked no changes needed to content1_content2_content1-tracked ### revert for: content1_content2_content1-untracked + undeleting content1_content2_content1-untracked ### revert for: content1_content2_content2-tracked + reverting content1_content2_content2-tracked ### revert for: content1_content2_content2-untracked + undeleting content1_content2_content2-untracked ### revert for: content1_content2_content3-tracked + reverting content1_content2_content3-tracked ### revert for: content1_content2_content3-untracked + undeleting content1_content2_content3-untracked ### revert for: content1_content2_missing-tracked + reverting content1_content2_missing-tracked ### revert for: content1_content2_missing-untracked + undeleting content1_content2_missing-untracked ### revert for: content1_missing_content1-tracked no changes needed to content1_missing_content1-tracked ### revert for: content1_missing_content1-untracked + adding content1_missing_content1-untracked ### revert for: content1_missing_content3-tracked + reverting content1_missing_content3-tracked ### revert for: content1_missing_content3-untracked + adding content1_missing_content3-untracked ### revert for: content1_missing_missing-tracked + reverting content1_missing_missing-tracked ### revert for: content1_missing_missing-untracked + adding content1_missing_missing-untracked ### revert for: missing_content2_content2-tracked + removing missing_content2_content2-tracked ### revert for: missing_content2_content2-untracked no changes needed to missing_content2_content2-untracked ### revert for: missing_content2_content3-tracked + removing missing_content2_content3-tracked ### revert for: missing_content2_content3-untracked no changes needed to missing_content2_content3-untracked ### revert for: missing_content2_missing-tracked + removing missing_content2_missing-tracked ### revert for: missing_content2_missing-untracked no changes needed to missing_content2_missing-untracked ### revert for: missing_missing_content3-tracked + forgetting missing_missing_content3-tracked ### revert for: missing_missing_content3-untracked file not managed: missing_missing_content3-untracked ### revert for: missing_missing_missing-tracked + forgetting missing_missing_missing-tracked ### revert for: missing_missing_missing-untracked missing_missing_missing-untracked: no such file in rev * (glob) @@ -1120,8 +1175,8 @@ M A A B $ hg revert --rev 1 --all + removing B reverting A - removing B $ hg status --rev 1 From the other parents @@ -1140,8 +1195,8 @@ M A A B $ hg revert --rev 1 --all + removing B reverting A - removing B $ hg status --rev 1 $ cd ..