undumprevlog
37 lines
| 1000 B
| text/plain
|
TextLexer
/ contrib / undumprevlog
Matt Mackall
|
r6433 | #!/usr/bin/env python | ||
# Undump a dump from dumprevlog | ||||
# $ hg init | ||||
# $ undumprevlog < repo.dump | ||||
import sys | ||||
Adrian Buehlmann
|
r13970 | from mercurial import revlog, node, scmutil, util, transaction | ||
Matt Mackall
|
r6433 | |||
Adrian Buehlmann
|
r6466 | for fp in (sys.stdin, sys.stdout, sys.stderr): | ||
Adrian Buehlmann
|
r14233 | util.setbinary(fp) | ||
Adrian Buehlmann
|
r6466 | |||
Adrian Buehlmann
|
r13970 | opener = scmutil.opener('.', False) | ||
Matt Mackall
|
r6433 | 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() | ||||