Mercurial > hg
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") |