mirror of
https://github.com/facebook/sapling.git
synced 2024-10-06 23:07:18 +03:00
rebase: add -m/--message to rebase --collapse (issue2389)
When collapsing changesets with rebase, you get a chance to edit the commit message manually, but there is no way to pass this message from the command line. This patch adds a `--message` (with short form `-m`) and `--logfile` (with short form `-m`) options to the rebase command. These options suppresses the generation of the default commit message, and instead use the message provided in the option (in case of `-m`) or in the file it points to (in case of `-l`). If you use this option without the `--collapse` option, it will raise an error. Options documentation edited by Patrick Mezard <pmezard@gmail.com>
This commit is contained in:
parent
7bd158b865
commit
30b72ca2fb
@ -90,6 +90,7 @@ def rebase(ui, repo, **opts):
|
||||
contf = opts.get('continue')
|
||||
abortf = opts.get('abort')
|
||||
collapsef = opts.get('collapse', False)
|
||||
collapsemsg = cmdutil.logmessage(opts)
|
||||
extrafn = opts.get('extrafn') # internal, used by e.g. hgsubversion
|
||||
keepf = opts.get('keep', False)
|
||||
keepbranchesf = opts.get('keepbranches', False)
|
||||
@ -98,6 +99,10 @@ def rebase(ui, repo, **opts):
|
||||
# other extensions
|
||||
keepopen = opts.get('keepopen', False)
|
||||
|
||||
if collapsemsg and not collapsef:
|
||||
raise util.Abort(
|
||||
_('message can only be specified with collapse'))
|
||||
|
||||
if contf or abortf:
|
||||
if contf and abortf:
|
||||
raise util.Abort(_('cannot use both abort and continue'))
|
||||
@ -189,11 +194,14 @@ def rebase(ui, repo, **opts):
|
||||
if collapsef and not keepopen:
|
||||
p1, p2 = defineparents(repo, min(state), target,
|
||||
state, targetancestors)
|
||||
commitmsg = 'Collapsed revision'
|
||||
for rebased in state:
|
||||
if rebased not in skipped and state[rebased] != nullmerge:
|
||||
commitmsg += '\n* %s' % repo[rebased].description()
|
||||
commitmsg = ui.edit(commitmsg, repo.ui.username())
|
||||
if collapsemsg:
|
||||
commitmsg = collapsemsg
|
||||
else:
|
||||
commitmsg = 'Collapsed revision'
|
||||
for rebased in state:
|
||||
if rebased not in skipped and state[rebased] != nullmerge:
|
||||
commitmsg += '\n* %s' % repo[rebased].description()
|
||||
commitmsg = ui.edit(commitmsg, repo.ui.username())
|
||||
newrev = concludenode(repo, rev, p1, external, commitmsg=commitmsg,
|
||||
extrafn=extrafn)
|
||||
|
||||
@ -564,6 +572,10 @@ cmdtable = {
|
||||
('d', 'dest', '',
|
||||
_('rebase onto the specified changeset'), _('REV')),
|
||||
('', 'collapse', False, _('collapse the rebased changesets')),
|
||||
('m', 'message', '',
|
||||
_('use text as collapse commit message'), _('TEXT')),
|
||||
('l', 'logfile', '',
|
||||
_('read collapse commit message from file'), _('FILE')),
|
||||
('', 'keep', False, _('keep original changesets')),
|
||||
('', 'keepbranches', False, _('keep original branch names')),
|
||||
('', 'detach', False, _('force detaching of source from its original '
|
||||
|
@ -137,6 +137,40 @@ Rebasing G onto H:
|
||||
|
||||
$ cd ..
|
||||
|
||||
Rebasing G onto H with custom message:
|
||||
|
||||
$ hg clone -q -u . a a3
|
||||
$ cd a3
|
||||
|
||||
$ hg rebase --base 6 -m 'custom message'
|
||||
abort: message can only be specified with collapse
|
||||
[255]
|
||||
|
||||
$ hg rebase --base 6 --collapse -m 'custom message'
|
||||
saved backup bundle to $TESTTMP/a3/.hg/strip-backup/*-backup.hg (glob)
|
||||
|
||||
$ hg tglog
|
||||
@ 6: 'custom message'
|
||||
|
|
||||
o 5: 'H'
|
||||
|
|
||||
o 4: 'F'
|
||||
|
|
||||
| o 3: 'D'
|
||||
| |
|
||||
| o 2: 'C'
|
||||
| |
|
||||
| o 1: 'B'
|
||||
|/
|
||||
o 0: 'A'
|
||||
|
||||
$ hg manifest
|
||||
A
|
||||
E
|
||||
F
|
||||
H
|
||||
|
||||
$ cd ..
|
||||
|
||||
Create repo b:
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user