##// END OF EJS Templates
copies-rust: pre-introduce a PathToken type and use it where applicable...
copies-rust: pre-introduce a PathToken type and use it where applicable Handling string all the time is quite slow. So we are about to use more efficient "token". We do some of the churn early to clarify the next changesets. Differential Revision: https://phab.mercurial-scm.org/D9492

File last commit:

r46729:59fa3890 default
r46745:818502d2 default
Show More
undumprevlog
48 lines | 1.2 KiB | text/plain | TextLexer
#!/usr/bin/env python3
# Undump a dump from dumprevlog
# $ hg init
# $ undumprevlog < repo.dump
from __future__ import absolute_import, print_function
import sys
from mercurial.node import bin
from mercurial import (
encoding,
revlog,
transaction,
vfs as vfsmod,
)
from mercurial.utils import procutil
for fp in (sys.stdin, sys.stdout, sys.stderr):
procutil.setbinary(fp)
opener = vfsmod.vfs(b'.', False)
tr = transaction.transaction(
sys.stderr.write, opener, {b'store': opener}, b"undump.journal"
)
while True:
l = sys.stdin.readline()
if not l:
break
if l.startswith("file:"):
f = encoding.strtolocal(l[6:-1])
r = revlog.revlog(opener, f)
procutil.stdout.write(b'%s\n' % f)
elif l.startswith("node:"):
n = bin(l[6:-1])
elif l.startswith("linkrev:"):
lr = int(l[9:-1])
elif l.startswith("parents:"):
p = l[9:-1].split()
p1 = bin(p[0])
p2 = bin(p[1])
elif l.startswith("length:"):
length = int(l[8:-1])
sys.stdin.readline() # start marker
d = encoding.strtolocal(sys.stdin.read(length))
sys.stdin.readline() # end marker
r.addrevision(d, tr, lr, p1, p2)
tr.close()