# HG changeset patch # User Jeremy Fitzhardinge # Date 1495138685 25200 # Node ID a580b2d65ded988da1b06e4300d05dcb0b95b352 # Parent 0d6b3572ad924103128bb9cd296000fc6fd821ef rebase: make sure merge state is cleaned up for no-op rebases (issue5494) If a rebase ends up doing a no-op commit, make sure the merge state is still cleaned up. diff -r 0d6b3572ad92 -r a580b2d65ded hgext/rebase.py --- a/hgext/rebase.py Wed May 17 09:43:50 2017 -0700 +++ b/hgext/rebase.py Thu May 18 13:18:05 2017 -0700 @@ -420,6 +420,11 @@ editor=editor, keepbranches=self.keepbranchesf, date=self.date) + if newnode is None: + # If it ended up being a no-op commit, then the normal + # merge state clean-up path doesn't happen, so do it + # here. Fix issue5494 + mergemod.mergestate.clean(repo) else: # Skip commit if we are collapsing repo.dirstate.beginparentchange() diff -r 0d6b3572ad92 -r a580b2d65ded tests/test-rebase-interruptions.t --- a/tests/test-rebase-interruptions.t Wed May 17 09:43:50 2017 -0700 +++ b/tests/test-rebase-interruptions.t Thu May 18 13:18:05 2017 -0700 @@ -272,3 +272,34 @@ o 0:public 'A' $ cd .. + +Make sure merge state is cleaned up after a no-op rebase merge (issue5494) + $ hg init repo + $ cd repo + $ echo a > a + $ hg commit -qAm base + $ echo b >> a + $ hg commit -qm b + $ hg up '.^' + 1 files updated, 0 files merged, 0 files removed, 0 files unresolved + $ echo c >> a + $ hg commit -qm c + $ hg rebase -s 1 -d 2 --noninteractive + rebasing 1:fdaca8533b86 "b" + merging a + warning: conflicts while merging a! (edit, then use 'hg resolve --mark') + unresolved conflicts (see hg resolve, then hg rebase --continue) + [1] + $ echo a > a + $ echo c >> a + $ hg resolve --mark a + (no more unresolved files) + continue: hg rebase --continue + $ hg rebase --continue + rebasing 1:fdaca8533b86 "b" + note: rebase of 1:fdaca8533b86 created no changes to commit + saved backup bundle to $TESTTMP/repo/.hg/strip-backup/fdaca8533b86-7fd70513-backup.hg (glob) + $ hg resolve --list + $ test -f .hg/merge + [1] +