[PATCH] commit: enable --secret option

Jordi Gutiérrez Hermoso jordigh at octave.org
Tue Jun 18 13:21:57 CDT 2013

# HG changeset patch
# User Jordi Gutiérrez Hermoso <jordigh at octave.org>
# Date 1371578523 14400
#      Tue Jun 18 14:02:03 2013 -0400
# Node ID 56ee926aeeaded0aedaba4d2097ed6f312568356
# Parent  401b3ad26e66f6b69937e1aa808da07065c408a6
commit: enable --secret option

At the moment, creating secret commits is slightly cumbersome. They
can either be created by changing the default commit phase to secret
or by doing `hg phase --secret --force`. Both of these make secret
commits appear to be like some kind of advanced feature.

Secret commits, however, should be a convenient feature for people who
want to work on a private branch without affecting anyone else. There
should therefore be a prominent and convenient method for creating
secret commits.

Since the default phase is draft and there is no need to use --force
to go from a secret phase to any other phase, this patch
intentionally does not add --draft and --public options.

diff --git a/mercurial/commands.py b/mercurial/commands.py
--- a/mercurial/commands.py
+++ b/mercurial/commands.py
@@ -1286,6 +1286,7 @@
     ('', 'close-branch', None,
      _('mark a branch as closed, hiding it from the branch list')),
     ('', 'amend', None, _('amend the parent of the working dir')),
+    ('s', 'secret', None, _('commit secret changeset')),
     ] + walkopts + commitopts + commitopts2 + subrepoopts,
     _('[OPTION]... [FILE]...'))
 def commit(ui, repo, *pats, **opts):
@@ -1338,6 +1339,9 @@
     bheads = repo.branchheads(branch)
     extra = {}
+    if opts.get('secret'):
+        ui.setconfig('phases', 'new-commit', 'secret')
     if opts.get('close_branch'):
         extra['close'] = 1

More information about the Mercurial-devel mailing list