##// END OF EJS Templates
rebase: also include commit of collapsed commits in single transaction...
rebase: also include commit of collapsed commits in single transaction When rebase.singletransaction is set, we still used to create a second transaction when committing with --collapse. It's simpler to create a single transaction. Note that in the affected .t file, the test that uses --collapse still appears to create two transactions (it prints "rebase status stored" twice). However, only a single transaction is actually created and the second printout comes from cmdutil.commitforceeditor() that explicitly calls tr.writepending(). Also note the that we now roll back any commits if the user closes the commit message editor with an error code (or leaves the message empty). That might be unfortunate, but it's consistent with how we behave in the --no-collapse case (if the user passed --edit). If we want to change that, I think it should be done consistently in a separate patch. Differential Revision: https://phab.mercurial-scm.org/D2728

File last commit:

r34971:3e549546 default
r36945:17a744c5 default
Show More
amend.py
57 lines | 1.9 KiB | text/x-python | PythonLexer
Jun Wu
amend: new extension providing the amend command...
r33404 # 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,
Pulkit Goyal
amend: error out if the note is greater than 255bytes...
r34890 error,
Pulkit Goyal
py3: handle keyword arguments in hgext/amend.py...
r34971 pycompat,
Jun Wu
amend: new extension providing the amend command...
r33404 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')),
Pulkit Goyal
amend: add a flag `-n/--note` to store note with amend...
r34796 ('n', 'note', '', _('store a note on the amend')),
Jun Wu
amend: new extension providing the amend command...
r33404 ] + 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.
"""
Pulkit Goyal
py3: handle keyword arguments in hgext/amend.py...
r34971 opts = pycompat.byteskwargs(opts)
Pulkit Goyal
amend: error out if the note is greater than 255bytes...
r34890 if len(opts['note']) > 255:
raise error.Abort(_("cannot store a note of more than 255 bytes"))
Jun Wu
amend: new extension providing the amend command...
r33404 with repo.wlock(), repo.lock():
if not opts.get('logfile'):
opts['message'] = opts.get('message') or repo['.'].description()
opts['amend'] = True
Pulkit Goyal
py3: handle keyword arguments in hgext/amend.py...
r34971 return commands._docommit(ui, repo, *pats, **pycompat.strkwargs(opts))