Mercurial > hg
changeset 6433:ec5d77eb3431
add simple dump and undump scripts to contrib/
author | Matt Mackall <mpm@selenic.com> |
---|---|
date | Mon, 31 Mar 2008 21:49:32 -0500 |
parents | b1204fd06c2e |
children | 62e0bb41e682 |
files | contrib/dumprevlog contrib/undumprevlog |
diffstat | 2 files changed, 55 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/contrib/dumprevlog Mon Mar 31 21:49:32 2008 -0500 @@ -0,0 +1,21 @@ +#!/usr/bin/env python +# Dump revlogs as raw data stream +# $ find .hg/store/ -name "*.i" | xargs dumprevlog > repo.dump + +import sys +from mercurial import revlog, node + +for f in sys.argv[1:]: + r = revlog.revlog(open, f) + print "file:", f + for i in xrange(r.count()): + n = r.node(i) + p = r.parents(n) + d = r.revision(n) + print "node:", node.hex(n) + print "linkrev:", r.linkrev(n) + print "parents:", node.hex(p[0]), node.hex(p[1]) + print "length:", len(d) + print "-start-" + print d + print "-end-"
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/contrib/undumprevlog Mon Mar 31 21:49:32 2008 -0500 @@ -0,0 +1,34 @@ +#!/usr/bin/env python +# Undump a dump from dumprevlog +# $ hg init +# $ undumprevlog < repo.dump + +import sys +from mercurial import revlog, node, util, transaction + +opener = util.opener('.', False) +tr = transaction.transaction(sys.stderr.write, opener, "undump.journal") +while 1: + l = sys.stdin.readline() + if not l: + break + if l.startswith("file:"): + f = l[6:-1] + r = revlog.revlog(opener, f) + print f + elif l.startswith("node:"): + n = node.bin(l[6:-1]) + elif l.startswith("linkrev:"): + lr = int(l[9:-1]) + elif l.startswith("parents:"): + p = l[9:-1].split() + p1 = node.bin(p[0]) + p2 = node.bin(p[1]) + elif l.startswith("length:"): + length = int(l[8:-1]) + sys.stdin.readline() # start marker + d = sys.stdin.read(length) + sys.stdin.readline() # end marker + r.addrevision(d, tr, lr, p1, p2) + +tr.close()