undumprevlog
46 lines
| 1.1 KiB
| text/plain
|
TextLexer
/ contrib / undumprevlog
Matt Mackall
|
r6433 | #!/usr/bin/env python | ||
# Undump a dump from dumprevlog | ||||
# $ hg init | ||||
# $ undumprevlog < repo.dump | ||||
Augie Fackler
|
r33874 | from __future__ import absolute_import, print_function | ||
Pulkit Goyal
|
r29167 | |||
Matt Mackall
|
r6433 | import sys | ||
Pulkit Goyal
|
r29167 | from mercurial import ( | ||
node, | ||||
revlog, | ||||
transaction, | ||||
util, | ||||
Pierre-Yves David
|
r31248 | vfs as vfsmod, | ||
Pulkit Goyal
|
r29167 | ) | ||
Matt Mackall
|
r6433 | |||
Adrian Buehlmann
|
r6466 | for fp in (sys.stdin, sys.stdout, sys.stderr): | ||
Adrian Buehlmann
|
r14233 | util.setbinary(fp) | ||
Adrian Buehlmann
|
r6466 | |||
Pierre-Yves David
|
r31248 | opener = vfsmod.vfs('.', False) | ||
Pierre-Yves David
|
r23310 | tr = transaction.transaction(sys.stderr.write, opener, {'store': opener}, | ||
"undump.journal") | ||||
Mads Kiilerich
|
r19022 | while True: | ||
Matt Mackall
|
r6433 | l = sys.stdin.readline() | ||
if not l: | ||||
break | ||||
if l.startswith("file:"): | ||||
f = l[6:-1] | ||||
r = revlog.revlog(opener, f) | ||||
Augie Fackler
|
r33874 | print(f) | ||
Matt Mackall
|
r6433 | 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() | ||||