mirror of
https://github.com/facebook/sapling.git
synced 2024-10-10 16:57:49 +03:00
4927f52889
I didn't do anything to ensure correctness here, just enough to avoid tracebacks in the import checker, which uses the native ast module to try and parse all our Python files.
47 lines
1.1 KiB
Python
Executable File
47 lines
1.1 KiB
Python
Executable File
#!/usr/bin/env python
|
|
# Undump a dump from dumprevlog
|
|
# $ hg init
|
|
# $ undumprevlog < repo.dump
|
|
|
|
from __future__ import absolute_import, print_function
|
|
|
|
import sys
|
|
from mercurial import (
|
|
node,
|
|
revlog,
|
|
transaction,
|
|
util,
|
|
vfs as vfsmod,
|
|
)
|
|
|
|
for fp in (sys.stdin, sys.stdout, sys.stderr):
|
|
util.setbinary(fp)
|
|
|
|
opener = vfsmod.vfs('.', False)
|
|
tr = transaction.transaction(sys.stderr.write, opener, {'store': opener},
|
|
"undump.journal")
|
|
while True:
|
|
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()
|