diff -r 102f144f6e02 -r 9972758ab4c5 hgext/rebase.py --- a/hgext/rebase.py Tue Dec 02 09:46:20 2014 -0800 +++ b/hgext/rebase.py Tue Dec 02 12:23:12 2014 -0800 @@ -18,7 +18,7 @@ from mercurial import extensions, patch, scmutil, phases, obsolete, error from mercurial import copies from mercurial.commands import templateopts -from mercurial.node import nullrev +from mercurial.node import nullrev, nullid, hex from mercurial.lock import release from mercurial.i18n import _ import os, errno @@ -737,8 +737,12 @@ f.write('%s\n' % (activebookmark or '')) for d, v in state.iteritems(): oldrev = repo[d].hex() - if v > nullmerge: + if v >= 0: newrev = repo[v].hex() + elif v == revtodo: + # To maintain format compatibility, we have to use nullid. + # Please do remove this special case when upgrading the format. + newrev = hex(nullid) else: newrev = v f.write("%s:%s\n" % (oldrev, newrev)) @@ -780,6 +784,9 @@ oldrev, newrev = l.split(':') if newrev in (str(nullmerge), str(revignored)): state[repo[oldrev].rev()] = int(newrev) + elif newrev == nullid: + state[repo[oldrev].rev()] = revtodo + # Legacy compat special case else: state[repo[oldrev].rev()] = repo[newrev].rev()