Mercurial > hg-stable
diff mercurial/commands.py @ 19440:4a0d0616c47d
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.
author | Jordi Gutiérrez Hermoso <jordigh@octave.org> |
---|---|
date | Thu, 11 Jul 2013 13:11:41 -0400 |
parents | f4148c36f0aa |
children | bf6bc4681383 |
line wrap: on
line diff
--- a/mercurial/commands.py Wed Jul 17 23:58:04 2013 +0200 +++ b/mercurial/commands.py Thu Jul 11 13:11:41 2013 -0400 @@ -1285,6 +1285,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, _('use the secret phase for committing')), ] + walkopts + commitopts + commitopts2 + subrepoopts, _('[OPTION]... [FILE]...')) def commit(ui, repo, *pats, **opts): @@ -1329,6 +1330,9 @@ # Let --subrepos on the command line override config setting. ui.setconfig('ui', 'commitsubrepos', True) + # Save this for restoring it later + oldcommitphase = ui.config('phases', 'new-commit') + if repo.vfs.exists('graftstate'): raise util.Abort(_('cannot commit an interrupted graft operation'), hint=_('use "hg graft -c" to continue graft')) @@ -1370,12 +1374,18 @@ if not message: message = old.description() editor = cmdutil.commitforceeditor - return repo.commit(message, - opts.get('user') or old.user(), - opts.get('date') or old.date(), - match, - editor=editor, - extra=extra) + try: + if opts.get('secret'): + ui.setconfig('phases', 'new-commit', 'secret') + + return repo.commit(message, + opts.get('user') or old.user(), + opts.get('date') or old.date(), + match, + editor=editor, + extra=extra) + finally: + ui.setconfig('phases', 'new-commit', oldcommitphase) current = repo._bookmarkcurrent marks = old.bookmarks() @@ -1398,8 +1408,15 @@ e = cmdutil.commitforceeditor def commitfunc(ui, repo, message, match, opts): - return repo.commit(message, opts.get('user'), opts.get('date'), - match, editor=e, extra=extra) + try: + if opts.get('secret'): + ui.setconfig('phases', 'new-commit', 'secret') + + return repo.commit(message, opts.get('user'), opts.get('date'), + match, editor=e, extra=extra) + finally: + ui.setconfig('phases', 'new-commit', oldcommitphase) + node = cmdutil.commit(ui, repo, commitfunc, pats, opts)