Patchwork D12550: absorb: make `--edit-lines` imply `--apply-changes`

login
register
mail settings
Submitter phabricator
Date April 13, 2022, 3:11 p.m.
Message ID <differential-rev-PHID-DREV-spcijkzleklgp3d2nnl4-req@mercurial-scm.org>
Download mbox | patch
Permalink /patch/50898/
State New
Headers show

Comments

phabricator - April 13, 2022, 3:11 p.m.
martinvonz created this revision.
Herald added a reviewer: hg-reviewers.
Herald added a subscriber: mercurial-patches.

REVISION SUMMARY
  One of our users tried to use `hg absorb -e` but it seemed that it
  would only bring up the editor if there were no changes the command
  could automatically detect destination for. I spent probably half an
  hour debugging why it worked that way. I finally figured out that it
  does bring up the editor, but you have to answer "yes" to the "apply
  changes" prompt *first*. That seems very unintuitive. If the user
  wants to edit the changes, there seems to be little reason to present
  them with a prompt first, so let's have `-e/--edit-lines` imply
  `-a/--apply-changes`. All the tests using `-e` also already used
  `-a`. I changed them to rely on the implied `-a` so we get coverage of
  that.

REPOSITORY
  rHG Mercurial

BRANCH
  default

REVISION DETAIL
  https://phab.mercurial-scm.org/D12550

AFFECTED FILES
  hgext/absorb.py
  tests/test-absorb-edit-lines.t

CHANGE DETAILS




To: martinvonz, #hg-reviewers
Cc: mercurial-patches, mercurial-devel

Patch

diff --git a/tests/test-absorb-edit-lines.t b/tests/test-absorb-edit-lines.t
--- a/tests/test-absorb-edit-lines.t
+++ b/tests/test-absorb-edit-lines.t
@@ -15,10 +15,10 @@ 
 
 absorb --edit-lines will run the editor if filename is provided:
 
-  $ hg absorb --edit-lines --apply-changes
+  $ hg absorb --edit-lines
   nothing applied
   [1]
-  $ HGEDITOR=cat hg absorb --edit-lines --apply-changes a
+  $ HGEDITOR=cat hg absorb --edit-lines a
   HG: editing a
   HG: "y" means the line to the right exists in the changeset to the top
   HG:
@@ -43,7 +43,7 @@ 
   >     y   : f
   >     yyy : g
   > EOF
-  $ HGEDITOR='cat editortext >' hg absorb -q --edit-lines --apply-changes a
+  $ HGEDITOR='cat editortext >' hg absorb -q --edit-lines a
   $ hg cat -r 0 a
   d  
   e
diff --git a/hgext/absorb.py b/hgext/absorb.py
--- a/hgext/absorb.py
+++ b/hgext/absorb.py
@@ -1045,6 +1045,10 @@ 
         origchunks = patch.parsepatch(diff)
         chunks = cmdutil.recordfilter(ui, origchunks, matcher)[0]
         targetctx = overlaydiffcontext(stack[-1], chunks)
+    if opts.get(b'edit_lines'):
+        # If we're going to open the editor, don't ask the user to confirm
+        # first
+        opts[b'apply_changes'] = True
     fm = None
     if opts.get(b'print_changes') or not opts.get(b'apply_changes'):
         fm = ui.formatter(b'absorb', opts)