##// 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:

r36437:75c76cee default
r36945:17a744c5 default
Show More
commitextras.py
76 lines | 2.3 KiB | text/x-python | PythonLexer
Pulkit Goyal
commitextras: move fb extension to core which add extras to a commit...
r33546 # commitextras.py
#
# Copyright 2013 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.
Pulkit Goyal
commitextras: mark the extension as ADVANCED
r33562 '''adds a new flag extras to commit (ADVANCED)'''
Pulkit Goyal
commitextras: move fb extension to core which add extras to a commit...
r33546
from __future__ import absolute_import
Pulkit Goyal
commitextras: make sure keys contains ascii letters, numbers, '_' and '-' only
r33603 import re
Pulkit Goyal
commitextras: move fb extension to core which add extras to a commit...
r33546 from mercurial.i18n import _
from mercurial import (
commands,
Pulkit Goyal
commitextras: check the format of the arguments and no internal key is used...
r33547 error,
Pulkit Goyal
commitextras: move fb extension to core which add extras to a commit...
r33546 extensions,
registrar,
)
cmdtable = {}
command = registrar.command(cmdtable)
testedwith = 'ships-with-hg-core'
Pulkit Goyal
commitextras: check the format of the arguments and no internal key is used...
r33547 usedinternally = {
'amend_source',
'branch',
'close',
'histedit_source',
'topic',
'rebase_source',
'intermediate-source',
'__touch-noise__',
'source',
'transplant_source',
}
Pulkit Goyal
commitextras: move fb extension to core which add extras to a commit...
r33546 def extsetup(ui):
entry = extensions.wrapcommand(commands.table, 'commit', _commit)
options = entry[1]
options.append(('', 'extra', [],
_('set a changeset\'s extra values'), _("KEY=VALUE")))
def _commit(orig, ui, repo, *pats, **opts):
origcommit = repo.commit
try:
def _wrappedcommit(*innerpats, **inneropts):
Pulkit Goyal
py3: handle keyword arguments in hgext/commitextras.py...
r34976 extras = opts.get(r'extra')
Pulkit Goyal
commitextras: move fb extension to core which add extras to a commit...
r33546 if extras:
for raw in extras:
Pulkit Goyal
commitextras: check the format of the arguments and no internal key is used...
r33547 if '=' not in raw:
msg = _("unable to parse '%s', should follow "
"KEY=VALUE format")
raise error.Abort(msg % raw)
Pulkit Goyal
commitextras: move fb extension to core which add extras to a commit...
r33546 k, v = raw.split('=', 1)
Pulkit Goyal
commitextras: make sure keys are not empty...
r33607 if not k:
msg = _("unable to parse '%s', keys can't be empty")
raise error.Abort(msg % raw)
Pulkit Goyal
commitextras: make sure keys contains ascii letters, numbers, '_' and '-' only
r33603 if re.search('[^\w-]', k):
msg = _("keys can only contain ascii letters, digits,"
" '_' and '-'")
raise error.Abort(msg)
Pulkit Goyal
commitextras: check the format of the arguments and no internal key is used...
r33547 if k in usedinternally:
msg = _("key '%s' is used internally, can't be set "
"manually")
raise error.Abort(msg % k)
Pulkit Goyal
py3: handle keyword arguments in hgext/commitextras.py...
r34976 inneropts[r'extra'][k] = v
Pulkit Goyal
commitextras: move fb extension to core which add extras to a commit...
r33546 return origcommit(*innerpats, **inneropts)
# This __dict__ logic is needed because the normal
# extension.wrapfunction doesn't seem to work.
Augie Fackler
commitextras: fix on Python 3 by using sysstrs for __dict__ ops...
r36437 repo.__dict__[r'commit'] = _wrappedcommit
Pulkit Goyal
commitextras: move fb extension to core which add extras to a commit...
r33546 return orig(ui, repo, *pats, **opts)
finally:
Augie Fackler
commitextras: fix on Python 3 by using sysstrs for __dict__ ops...
r36437 del repo.__dict__[r'commit']