Mercurial > public > mercurial-scm > hg-stable
diff hgext/amend.py @ 33404:0d5afd360e9e
amend: new extension providing the amend command
Various third parties have implemented the `amend` command, which is in high
demand. This patch adds it as an experimental extension so its interface
could be formalized in core directly.
Since `commit --amend` is basically what `amend` should do. The command is
just a thin wrapper around `commit --amend` and just prevent the editor from
popping up by passing `--message`.
author | Jun Wu <quark@fb.com> |
---|---|
date | Tue, 11 Jul 2017 20:53:55 -0700 |
parents | |
children | 530b7361e3a9 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/hgext/amend.py Tue Jul 11 20:53:55 2017 -0700 @@ -0,0 +1,51 @@ +# amend.py - provide the amend command +# +# Copyright 2017 Facebook, Inc. +# +# This software may be used and distributed according to the terms of the +# GNU General Public License version 2 or any later version. +"""provide the amend command (EXPERIMENTAL) + +This extension provides an ``amend`` command that is similar to +``commit --amend`` but does not prompt an editor. +""" + +from __future__ import absolute_import + +from mercurial.i18n import _ +from mercurial import ( + cmdutil, + commands, + registrar, +) + +# Note for extension authors: ONLY specify testedwith = 'ships-with-hg-core' for +# extensions which SHIP WITH MERCURIAL. Non-mainline extensions should +# be specifying the version(s) of Mercurial they are tested with, or +# leave the attribute unspecified. +testedwith = 'ships-with-hg-core' + +cmdtable = {} +command = registrar.command(cmdtable) + +@command('amend', + [('A', 'addremove', None, + _('mark new/missing files as added/removed before committing')), + ('e', 'edit', None, _('invoke editor on commit messages')), + ('i', 'interactive', None, _('use interactive mode')), + ] + cmdutil.walkopts + cmdutil.commitopts + cmdutil.commitopts2, + _('[OPTION]... [FILE]...'), + inferrepo=True) +def amend(ui, repo, *pats, **opts): + """amend the working copy parent with all or specified outstanding changes + + Similar to :hg:`commit --amend`, but reuse the commit message without + invoking editor, unless ``--edit`` was set. + + See :hg:`help commit` for more details. + """ + with repo.wlock(), repo.lock(): + if not opts.get('logfile'): + opts['message'] = opts.get('message') or repo['.'].description() + opts['amend'] = True + return commands._docommit(ui, repo, *pats, **opts)