comparison hgext/rebase.py @ 44555:05654ea5137c

rebase: accept multiple --source arguments (BC) I think it's a little surprising that `hg rebase -s A -s B` rebases only `B::` and ignores `A`. That's because the `-s` flag is not a repeated flag. This patch makes it a repeated flag. Differential Revision: https://phab.mercurial-scm.org/D8292
author Martin von Zweigbergk <martinvonz@google.com>
date Fri, 13 Mar 2020 16:39:32 -0700
parents c4c97cabfc16
children f63598aa1c4b
comparison
equal deleted inserted replaced
44554:c4c97cabfc16 44555:05654ea5137c
813 b'rebase', 813 b'rebase',
814 [ 814 [
815 ( 815 (
816 b's', 816 b's',
817 b'source', 817 b'source',
818 b'', 818 [],
819 _(b'rebase the specified changeset and descendants'), 819 _(b'rebase the specified changesets and their descendants'),
820 _(b'REV'), 820 _(b'REV'),
821 ), 821 ),
822 ( 822 (
823 b'b', 823 b'b',
824 b'base', 824 b'base',
869 ), 869 ),
870 ] 870 ]
871 + cmdutil.dryrunopts 871 + cmdutil.dryrunopts
872 + cmdutil.formatteropts 872 + cmdutil.formatteropts
873 + cmdutil.confirmopts, 873 + cmdutil.confirmopts,
874 _(b'[-s REV | -b REV | [-r REV]...] [-d REV] [OPTION]...'), 874 _(b'[[-s REV]... | -b REV | [-r REV]...] [-d REV] [OPTION]...'),
875 helpcategory=command.CATEGORY_CHANGE_MANAGEMENT, 875 helpcategory=command.CATEGORY_CHANGE_MANAGEMENT,
876 ) 876 )
877 def rebase(ui, repo, **opts): 877 def rebase(ui, repo, **opts):
878 """move changeset (and descendants) to a different branch 878 """move changeset (and descendants) to a different branch
879 879
1184 destmap = _definedestmap( 1184 destmap = _definedestmap(
1185 ui, 1185 ui,
1186 repo, 1186 repo,
1187 inmemory, 1187 inmemory,
1188 opts.get(b'dest', None), 1188 opts.get(b'dest', None),
1189 opts.get(b'source', None), 1189 opts.get(b'source', []),
1190 opts.get(b'base', None), 1190 opts.get(b'base', None),
1191 opts.get(b'rev', []), 1191 opts.get(b'rev', []),
1192 destspace=destspace, 1192 destspace=destspace,
1193 ) 1193 )
1194 retcode = rbsrt._preparenewrebase(destmap) 1194 retcode = rbsrt._preparenewrebase(destmap)
1241 rebaseset = scmutil.revrange(repo, revf) 1241 rebaseset = scmutil.revrange(repo, revf)
1242 if not rebaseset: 1242 if not rebaseset:
1243 ui.status(_(b'empty "rev" revision set - nothing to rebase\n')) 1243 ui.status(_(b'empty "rev" revision set - nothing to rebase\n'))
1244 return None 1244 return None
1245 elif srcf: 1245 elif srcf:
1246 src = scmutil.revrange(repo, [srcf]) 1246 src = scmutil.revrange(repo, srcf)
1247 if not src: 1247 if not src:
1248 ui.status(_(b'empty "source" revision set - nothing to rebase\n')) 1248 ui.status(_(b'empty "source" revision set - nothing to rebase\n'))
1249 return None 1249 return None
1250 rebaseset = repo.revs(b'(%ld)::', src) or src 1250 # `+ (%ld)` to work around `wdir()::` being empty
1251 rebaseset = repo.revs(b'(%ld):: + (%ld)', src, src)
1251 else: 1252 else:
1252 base = scmutil.revrange(repo, [basef or b'.']) 1253 base = scmutil.revrange(repo, [basef or b'.'])
1253 if not base: 1254 if not base:
1254 ui.status( 1255 ui.status(
1255 _(b'empty "base" revision set - ' b"can't compute rebase set\n") 1256 _(b'empty "base" revision set - ' b"can't compute rebase set\n")