diff -r ad37c569ec81 -r 4c4d91908492 mercurial/repair.py --- a/mercurial/repair.py Tue May 23 02:23:07 2017 +0200 +++ b/mercurial/repair.py Fri May 05 18:15:42 2017 +0200 @@ -16,6 +16,7 @@ from . import ( bundle2, changegroup, + discovery, error, exchange, obsolete, @@ -24,10 +25,7 @@ def _bundle(repo, bases, heads, node, suffix, compress=True): """create a bundle with the specified revisions as a backup""" - cgversion = changegroup.safeversion(repo) - cg = changegroup.changegroupsubset(repo, bases, heads, 'strip', - version=cgversion) backupdir = "strip-backup" vfs = repo.vfs if not vfs.isdir(backupdir): @@ -39,6 +37,7 @@ totalhash = hashlib.sha1(''.join(allhashes)).hexdigest() name = "%s/%s-%s-%s.hg" % (backupdir, short(node), totalhash[:8], suffix) + cgversion = changegroup.safeversion(repo) comp = None if cgversion != '01': bundletype = "HG20" @@ -48,8 +47,11 @@ bundletype = "HG10BZ" else: bundletype = "HG10UN" - return bundle2.writebundle(repo.ui, cg, name, bundletype, vfs, - compression=comp) + + outgoing = discovery.outgoing(repo, missingroots=bases, missingheads=heads) + contentopts = {'cg.version': cgversion} + return bundle2.writenewbundle(repo.ui, repo, 'strip', name, bundletype, + outgoing, contentopts, vfs, compression=comp) def _collectfiles(repo, striprev): """find out the filelogs affected by the strip"""