# HG changeset patch # User Boris Feld # Date 1513099331 -3600 # Node ID 7b73bf1a48d430986e8561db9070634c1923df70 # Parent fdd09d87635b32dbf06563bf1ccaac56798ad882 histedit: preserve active branch while histediting The branch information was properly preserved in the changeset, but the "active" branch of the working copy could be lost (the branch of the base being used). Histedit used to behave properly in this regard but the case was not tested and regressed 4 years ago in ab2362e1672e. diff -r fdd09d87635b -r 7b73bf1a48d4 hgext/histedit.py --- a/hgext/histedit.py Tue Dec 12 16:29:26 2017 +0800 +++ b/hgext/histedit.py Tue Dec 12 18:22:11 2017 +0100 @@ -487,6 +487,7 @@ repo.ui.pushbuffer(error=True, labeled=True) hg.update(repo, self.state.parentctxnode, quietempty=True) stats = applychanges(repo.ui, repo, rulectx, {}) + repo.dirstate.setbranch(rulectx.branch()) if stats and stats[3] > 0: buf = repo.ui.popbuffer() repo.ui.write(*buf) diff -r fdd09d87635b -r 7b73bf1a48d4 tests/test-histedit-commute.t --- a/tests/test-histedit-commute.t Tue Dec 12 16:29:26 2017 +0800 +++ b/tests/test-histedit-commute.t Tue Dec 12 18:22:11 2017 +0100 @@ -454,3 +454,36 @@ rename to another-dir/renamed-file $ cd .. + +Test that branches are preserved and stays active +------------------------------------------------- + + $ hg init repo-with-branch + $ cd repo-with-branch + $ echo a > a + $ hg add a + $ hg commit -m A + $ hg branch foo + marked working directory as branch foo + (branches are permanent and global, did you want a bookmark?) + $ echo a > b + $ hg add b + $ hg commit -m foo-B + $ echo a > c + $ hg add c + $ hg commit -m foo-C + + $ hg branch + foo + $ echo "pick efefa76d6dc3 2 foo-C" >> cmd + $ echo "pick 7336e7550422 1 foo-B" >> cmd + + $ HGEDITOR=cat hg histedit -r ".^" --commands cmd --quiet + $ hg log --template '{rev} {branch}\n' + 2 foo + 1 foo + 0 default + $ hg branch + foo + + $ cd ..