# HG changeset patch # User Mads Kiilerich # Date 1489362241 25200 # Node ID 65d93d7127777c184f7af0c9aeb4530f93f14094 # Parent b6a6df38a80229ca8d8dad868bcb2d23c34fc5c8 rebase: allow rebasing children of wd to wd if a new branch has been set (BC) The named branch of the leaf changeset can be changed by updating to it, setting the branch, and amending. But previously, there was no good way to *just* change the branch of several linear changes. If rebasing changes with another parent to '.', it would pick up a pending branch change up. But when rebasing changes that have the same parent, it would fail with 'nothing to rebase', even when the branch name was set differently. To fix this, allow rebasing to same parent when a branch has been set. diff -r b6a6df38a802 -r 65d93d712777 hgext/rebase.py --- a/hgext/rebase.py Sun Mar 12 16:41:46 2017 -0700 +++ b/hgext/rebase.py Sun Mar 12 16:44:01 2017 -0700 @@ -1224,7 +1224,12 @@ if commonbase == root: raise error.Abort(_('source is ancestor of destination')) if commonbase == dest: - samebranch = root.branch() == dest.branch() + wctx = repo[None] + if dest == wctx.p1(): + # when rebasing to '.', it will use the current wd branch name + samebranch = root.branch() == wctx.branch() + else: + samebranch = root.branch() == dest.branch() if not collapse and samebranch and root in dest.children(): repo.ui.debug('source is a child of destination\n') return None diff -r b6a6df38a802 -r 65d93d712777 tests/test-rebase-named-branches.t --- a/tests/test-rebase-named-branches.t Sun Mar 12 16:41:46 2017 -0700 +++ b/tests/test-rebase-named-branches.t Sun Mar 12 16:44:01 2017 -0700 @@ -387,4 +387,23 @@ o 0: '0' + $ hg up -cr 1 + 0 files updated, 0 files merged, 0 files removed, 0 files unresolved + $ hg branch x + marked working directory as branch x + $ hg rebase -r 3:: -d . + rebasing 3:76abc1c6f8c7 "b1" + rebasing 4:8427af5d86f2 "c2 closed" (tip) + note: rebase of 4:8427af5d86f2 created no changes to commit + saved backup bundle to $TESTTMP/case2/.hg/strip-backup/76abc1c6f8c7-cd698d13-backup.hg (glob) + $ hg tglog + o 3: 'b1' x + | + | o 2: 'c1' c + | | + @ | 1: 'b2' b + |/ + o 0: '0' + + $ cd ..