revert: ask user to confirm before tracking new file when interactive
authorMartin von Zweigbergk <martinvonz@google.com>
Mon, 28 Mar 2022 10:43:10 -0700
changeset 49032 3f6ef67e7a60
parent 49031 9be7da341885
child 49033 9a5d09d7f108
revert: ask user to confirm before tracking new file when interactive If interactively reverting from a commit with `hg revert -i -r`, we would unconditionally add files from that commit that are not already tracked in the working copy. We have prompts for adding back files removed in the working copy, but that's specific to such files and does not apply to adding files from another revision. Differential Revision: https://phab.mercurial-scm.org/D12416
mercurial/cmdutil.py
tests/test-revert-interactive.t
--- a/mercurial/cmdutil.py	Mon Mar 28 10:43:06 2022 -0700
+++ b/mercurial/cmdutil.py	Mon Mar 28 10:43:10 2022 -0700
@@ -3752,6 +3752,12 @@
         if f in newlyaddedandmodifiedfiles:
             continue
 
+        if interactive:
+            choice = repo.ui.promptchoice(
+                _(b"add new file %s (Yn)?$$ &Yes $$ &No") % uipathfn(f)
+            )
+            if choice != 0:
+                continue
         prntstatusmsg(b'add', f)
         checkout(f)
         repo.dirstate.set_tracked(f)
--- a/tests/test-revert-interactive.t	Mon Mar 28 10:43:06 2022 -0700
+++ b/tests/test-revert-interactive.t	Mon Mar 28 10:43:10 2022 -0700
@@ -420,6 +420,19 @@
   forgetting newfile
   $ hg status
   ? newfile
+  $ rm newfile
+  $ hg up 0
+  1 files updated, 0 files merged, 4 files removed, 0 files unresolved
+  $ hg status
+  $ hg revert -r 2 -i <<EOF
+  > y
+  > n
+  > EOF
+  add new file folder1/g (Yn)? y
+  adding folder1/g
+  add new file folder2/h (Yn)? n
+  $ hg status
+  A folder1/g
 
 When a line without EOL is selected during "revert -i" (issue5651)