# HG changeset patch # User Peter Arrenbrecht # Date 1314872964 -7200 # Node ID 73307643a09f4a34dfdbcdf9d65b9645406b41a1 # Parent cc16323e748da5f3583df18d23f24988546714a7 repair: switch from changegroupsubset to getbundle This is in preparation of deprecating changegroupsubset. diff -r cc16323e748d -r 73307643a09f mercurial/repair.py --- a/mercurial/repair.py Tue Aug 30 15:22:10 2011 +0200 +++ b/mercurial/repair.py Thu Sep 01 12:29:24 2011 +0200 @@ -11,9 +11,8 @@ from mercurial.i18n import _ import os -def _bundle(repo, bases, heads, node, suffix, compress=True): +def _bundle(repo, cg, node, suffix, compress=True): """create a bundle with the specified revisions as a backup""" - cg = repo.changegroupsubset(bases, heads, 'strip') backupdir = repo.join("strip-backup") if not os.path.isdir(backupdir): os.mkdir(backupdir) @@ -83,11 +82,9 @@ saveheads.add(r) saveheads = [cl.node(r) for r in saveheads] - # compute base nodes - if saverevs: - descendants = set(cl.descendants(*saverevs)) - saverevs.difference_update(descendants) - savebases = [cl.node(r) for r in saverevs] + # compute common nodes + savecommon = set(cl.node(p) for r in saverevs for p in cl.parentrevs(r) + if p not in saverevs and p not in tostrip) bm = repo._bookmarks updatebm = [] @@ -99,12 +96,14 @@ # create a changegroup for all the branches we need to keep backupfile = None if backup == "all": - backupfile = _bundle(repo, [node], cl.heads(), node, 'backup') + allnodes=[cl.node(r) for r in xrange(striprev, len(cl))] + cg = repo._changegroup(allnodes, 'strip') + backupfile = _bundle(repo, cg, node, 'backup') repo.ui.status(_("saved backup bundle to %s\n") % backupfile) - if saveheads or savebases: + if saveheads or savecommon: # do not compress partial bundle if we remove it from disk later - chgrpfile = _bundle(repo, savebases, saveheads, node, 'temp', - compress=keeppartialbundle) + cg = repo.getbundle('strip', common=savecommon, heads=saveheads) + chgrpfile = _bundle(repo, cg, node, 'temp', compress=keeppartialbundle) mfst = repo.manifest @@ -128,7 +127,7 @@ tr.abort() raise - if saveheads or savebases: + if saveheads or savecommon: ui.note(_("adding branch\n")) f = open(chgrpfile, "rb") gen = changegroup.readbundle(f, chgrpfile)