Mercurial > public > mercurial-scm > hg-stable
diff hgext/rebase.py @ 44301:830eae18b2f3
rebase: abort if the user tries to rebase the working copy
I think it's more correct to treat `hg rebase -r 'wdir()' -d foo`
as `hg co -m foo`, but I'm instead making it error out. That's partly
because it's probably what the user wanted (in the case I heard from a
user, they had done `hg rebase -s f` where `f` resolved to `wdir()`)
and partly because I don't want to think about more complicated cases
where the user specifies the working copy together with other commits.
Differential Revision: https://phab.mercurial-scm.org/D8057
author | Martin von Zweigbergk <martinvonz@google.com> |
---|---|
date | Fri, 31 Jan 2020 10:53:50 -0800 |
parents | 3d2de64c49d2 |
children | f546d2170b0f |
line wrap: on
line diff
--- a/hgext/rebase.py Fri Jan 31 10:41:50 2020 -0800 +++ b/hgext/rebase.py Fri Jan 31 10:53:50 2020 -0800 @@ -37,6 +37,7 @@ hg, merge as mergemod, mergeutil, + node as nodemod, obsolete, obsutil, patch, @@ -1265,8 +1266,7 @@ if not src: ui.status(_(b'empty "source" revision set - nothing to rebase\n')) return None - rebaseset = repo.revs(b'(%ld)::', src) - assert rebaseset + rebaseset = repo.revs(b'(%ld)::', src) or src else: base = scmutil.revrange(repo, [basef or b'.']) if not base: @@ -1341,6 +1341,8 @@ ) return None + if nodemod.wdirrev in rebaseset: + raise error.Abort(_(b'cannot rebase the working copy')) rebasingwcp = repo[b'.'].rev() in rebaseset ui.log( b"rebase",