Mercurial > public > mercurial-scm > hg
diff mercurial/scmutil.py @ 34005:5e83a8fe6bc4
rebase: initial support for multiple destinations
This patch defines `SRC` (a single source revision) and `ALLSRC` (all source
revisions) to be valid names in `--dest` revset if `--src` or `--rev` is
used. So destination could be defined differently according to source
revisions. The names are capitalized to make it clear they are "dynamically
defined", distinguishable from normal revsets (Thanks Augie for the
suggestion).
This is useful, for example, `-r 'orphan()' -d 'calc-dest(SRC)'` to solve
instability, which seems to be a highly wanted feature.
The feature is not completed, namely if `-d` overlaps with `-r`, things
could go wrong. A later patch will handle that case.
The feature is also gated by `experimental.rebase.multidest` config option
which is default off.
Differential Revision: https://phab.mercurial-scm.org/D469
author | Jun Wu <quark@fb.com> |
---|---|
date | Tue, 29 Aug 2017 17:27:37 -0700 |
parents | 2cd5aba5e1d2 |
children | d5b2beca16c0 |
line wrap: on
line diff
--- a/mercurial/scmutil.py Fri Aug 11 00:32:19 2017 -0700 +++ b/mercurial/scmutil.py Tue Aug 29 17:27:37 2017 -0700 @@ -402,11 +402,11 @@ return wdirrev return rev -def revsingle(repo, revspec, default='.'): +def revsingle(repo, revspec, default='.', localalias=None): if not revspec and revspec != 0: return repo[default] - l = revrange(repo, [revspec]) + l = revrange(repo, [revspec], localalias=localalias) if not l: raise error.Abort(_('empty revision set')) return repo[l.last()] @@ -445,7 +445,7 @@ return repo.lookup(first), repo.lookup(second) -def revrange(repo, specs): +def revrange(repo, specs, localalias=None): """Execute 1 to many revsets and return the union. This is the preferred mechanism for executing revsets using user-specified @@ -471,7 +471,7 @@ if isinstance(spec, int): spec = revsetlang.formatspec('rev(%d)', spec) allspecs.append(spec) - return repo.anyrevs(allspecs, user=True) + return repo.anyrevs(allspecs, user=True, localalias=localalias) def meaningfulparents(repo, ctx): """Return list of meaningful (or all if debug) parentrevs for rev.