# HG changeset patch # User Jordi GutiƩrrez Hermoso # Date 1373562701 14400 # Node ID 4a0d0616c47daa0a63f582bb611a20a7c4ec95d9 # Parent f4148c36f0aa3d41f80c859b8500656360b3d2fd 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 -r f4148c36f0aa -r 4a0d0616c47d mercurial/commands.py --- 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)