From patchwork Wed Feb 20 20:23:07 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: D5970: uncommit: add config option to keep commit by default From: phabricator X-Patchwork-Id: 38827 Message-Id: <4e49281161571f78215814f3309936b5@localhost.localdomain> To: mercurial-devel@mercurial-scm.org Date: Wed, 20 Feb 2019 20:23:07 +0000 martinvonz updated this revision to Diff 14148. REPOSITORY rHG Mercurial CHANGES SINCE LAST UPDATE https://phab.mercurial-scm.org/D5970?vs=14109&id=14148 REVISION DETAIL https://phab.mercurial-scm.org/D5970 AFFECTED FILES hgext/uncommit.py tests/test-uncommit.t CHANGE DETAILS To: martinvonz, #hg-reviewers Cc: mercurial-devel 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 < [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)