Mercurial > hg
changeset 20979:ad5b61370514
repair: make "strip()" treat bundle files via vfs
This patch makes "repair.strip()" treat bundle files via vfs.
This patch also avoids applying "vfs.join()" on the value returned by
"changegroup.writebundle()", to get relative path from "_bundle()".
author | FUJIWARA Katsunori <foozy@lares.dti.ne.jp> |
---|---|
date | Sun, 09 Mar 2014 01:03:28 +0900 |
parents | 5b58714e97ed |
children | 6fb4c94ae300 |
files | mercurial/repair.py |
diffstat | 1 files changed, 12 insertions(+), 10 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/repair.py Sun Mar 09 01:03:28 2014 +0900 +++ b/mercurial/repair.py Sun Mar 09 01:03:28 2014 +0900 @@ -9,7 +9,6 @@ from mercurial import changegroup from mercurial.node import short from mercurial.i18n import _ -import os import errno def _bundle(repo, bases, heads, node, suffix, compress=True): @@ -24,7 +23,7 @@ bundletype = "HG10BZ" else: bundletype = "HG10UN" - return vfs.join(changegroup.writebundle(cg, name, bundletype, vfs)) + return changegroup.writebundle(cg, name, bundletype, vfs) def _collectfiles(repo, striprev): """find out the filelogs affected by the strip""" @@ -109,10 +108,13 @@ # create a changegroup for all the branches we need to keep backupfile = None + vfs = repo.vfs if backup == "all": backupfile = _bundle(repo, stripbases, cl.heads(), node, topic) - repo.ui.status(_("saved backup bundle to %s\n") % backupfile) - repo.ui.log("backupbundle", "saved backup bundle to %s\n", backupfile) + repo.ui.status(_("saved backup bundle to %s\n") % + vfs.join(backupfile)) + repo.ui.log("backupbundle", "saved backup bundle to %s\n", + vfs.join(backupfile)) if saveheads or savebases: # do not compress partial bundle if we remove it from disk later chgrpfile = _bundle(repo, savebases, saveheads, node, 'temp', @@ -144,18 +146,18 @@ if saveheads or savebases: ui.note(_("adding branch\n")) - f = open(chgrpfile, "rb") - gen = changegroup.readbundle(f, chgrpfile) + f = vfs.open(chgrpfile, "rb") + gen = changegroup.readbundle(f, chgrpfile, vfs) if not repo.ui.verbose: # silence internal shuffling chatter repo.ui.pushbuffer() changegroup.addchangegroup(repo, gen, 'strip', - 'bundle:' + chgrpfile, True) + 'bundle:' + vfs.join(chgrpfile), True) if not repo.ui.verbose: repo.ui.popbuffer() f.close() if not keeppartialbundle: - os.unlink(chgrpfile) + vfs.unlink(chgrpfile) # remove undo files for undovfs, undofile in repo.undofiles(): @@ -172,10 +174,10 @@ except: # re-raises if backupfile: ui.warn(_("strip failed, full bundle stored in '%s'\n") - % backupfile) + % vfs.join(backupfile)) elif saveheads: ui.warn(_("strip failed, partial bundle stored in '%s'\n") - % chgrpfile) + % vfs.join(chgrpfile)) raise repo.destroyed()