D5970: uncommit: add config option to keep commit by default
martinvonz (Martin von Zweigbergk)
phabricator at mercurial-scm.org
Wed Feb 20 20:31:36 UTC 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