diff -r 5732e6d2b369 -r 71eb6a098315 mercurial/repair.py --- a/mercurial/repair.py Thu Jun 01 12:08:49 2017 +0200 +++ b/mercurial/repair.py Sat May 20 16:19:59 2017 +0200 @@ -122,6 +122,13 @@ savebases = [cl.node(r) for r in saverevs] stripbases = [cl.node(r) for r in tostrip] + stripobsidx = obsmarkers = () + if repo.ui.configbool('devel', 'strip-obsmarkers', True): + obsmarkers = obsolete.exclusivemarkers(repo, stripbases) + if obsmarkers: + stripobsidx = [i for i, m in enumerate(repo.obsstore) + if m in obsmarkers] + # For a set s, max(parents(s) - s) is the same as max(heads(::s - s)), but # is much faster newbmtarget = repo.revs('max(parents(%ld) - (%ld))', tostrip, tostrip) @@ -185,6 +192,9 @@ if troffset == 0: repo.store.markremoved(file) + deleteobsmarkers(repo.obsstore, stripobsidx) + del repo.obsstore + if tmpbundlefile: ui.note(_("adding branch\n")) f = vfs.open(tmpbundlefile, "rb")