D5970: uncommit: add config option to keep commit by default

martinvonz (Martin von Zweigbergk) phabricator at mercurial-scm.org
Wed Feb 20 15:31:36 EST 2019


This revision was automatically updated to reflect the committed changes.
Closed by commit rHG8980b5d6d9d9: uncommit: add config option to keep commit by default (authored by martinvonz, committed by ).

REPOSITORY
  rHG Mercurial

CHANGES SINCE LAST UPDATE
  https://phab.mercurial-scm.org/D5970?vs=14148&id=14153

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

AFFECTED FILES
  hgext/uncommit.py
  tests/test-uncommit.t

CHANGE DETAILS

diff --git a/tests/test-uncommit.t b/tests/test-uncommit.t
--- a/tests/test-uncommit.t
+++ b/tests/test-uncommit.t
@@ -308,7 +308,7 @@
   $ hg phase -r ".^"
   12: public
 
-Uncommit leaving an empty changeset
+Uncommit with --keep or experimental.uncommit.keep leaves an empty changeset
 
   $ cd $TESTTMP
   $ hg init repo1
@@ -328,9 +328,31 @@
   |/
   o  P FILES: P
   
+  $ cat >> .hg/hgrc <<EOF
+  > [experimental]
+  > uncommit.keep=True
+  > EOF
+  $ hg ci --amend
+  $ hg uncommit
+  note: keeping empty commit
+  $ hg log -G -T '{desc} FILES: {files}'
+  @  Q FILES:
+  |
+  | x  Q FILES: Q
+  |/
+  o  P FILES: P
+  
   $ hg status
   A Q
-
+  $ hg ci --amend
+  $ hg uncommit --no-keep
+  $ hg log -G -T '{desc} FILES: {files}'
+  x  Q FILES: Q
+  |
+  @  P FILES: P
+  
+  $ hg status
+  A Q
   $ cd ..
   $ rm -rf repo1
 
diff --git a/hgext/uncommit.py b/hgext/uncommit.py
--- a/hgext/uncommit.py
+++ b/hgext/uncommit.py
@@ -47,6 +47,9 @@
 configitem('experimental', 'uncommitondirtywdir',
     default=False,
 )
+configitem('experimental', 'uncommit.keep',
+    default=False,
+)
 
 stringio = util.stringio
 
@@ -240,7 +243,7 @@
 
 @command('uncommit',
     [('i', 'interactive', False, _('interactive mode to uncommit')),
-    ('', 'keep', False, _('allow an empty commit after uncommiting')),
+    ('', 'keep', None, _('allow an empty commit after uncommiting')),
     ] + commands.walkopts,
     _('[OPTION]... [FILE]...'),
     helpcategory=command.CATEGORY_CHANGE_MANAGEMENT)
@@ -270,7 +273,12 @@
 
         with repo.transaction('uncommit'):
             match = scmutil.match(old, pats, opts)
-            keepcommit = opts.get('keep') or pats
+            keepcommit = pats
+            if not keepcommit:
+                if opts.get('keep') is not None:
+                    keepcommit = opts.get('keep')
+                else:
+                    keepcommit = ui.configbool('experimental', 'uncommit.keep')
             newid = _commitfiltered(repo, old, match, keepcommit)
             if interactive:
                 match = scmutil.match(old, pats, opts)



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


More information about the Mercurial-devel mailing list