mirror of
https://github.com/facebook/sapling.git
synced 2024-10-10 08:47:12 +03:00
e5cb48ac36
The 'vfs' class is the first class citizen for years. We remove all usages of the older API. This will let us remove the old API eventually.
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
|
|
|
|
import sys
|
|
from mercurial import (
|
|
node,
|
|
revlog,
|
|
scmutil,
|
|
transaction,
|
|
util,
|
|
)
|
|
|
|
for fp in (sys.stdin, sys.stdout, sys.stderr):
|
|
util.setbinary(fp)
|
|
|
|
opener = scmutil.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()
|