dumprevlog
43 lines
| 1.0 KiB
| text/plain
|
TextLexer
/ contrib / dumprevlog
Matt Mackall
|
r6433 | #!/usr/bin/env python | ||
# Dump revlogs as raw data stream | ||||
# $ find .hg/store/ -name "*.i" | xargs dumprevlog > repo.dump | ||||
Pulkit Goyal
|
r29166 | from __future__ import absolute_import, print_function | ||
Pulkit Goyal
|
r29165 | |||
Matt Mackall
|
r6433 | import sys | ||
Pulkit Goyal
|
r29165 | from mercurial import ( | ||
Matt Harbison
|
r39983 | encoding, | ||
Pulkit Goyal
|
r29165 | node, | ||
Matt Harbison
|
r39983 | pycompat, | ||
Pulkit Goyal
|
r29165 | revlog, | ||
Yuya Nishihara
|
r37138 | ) | ||
from mercurial.utils import ( | ||||
procutil, | ||||
Pulkit Goyal
|
r29165 | ) | ||
Adrian Buehlmann
|
r6466 | |||
for fp in (sys.stdin, sys.stdout, sys.stderr): | ||||
Yuya Nishihara
|
r37138 | procutil.setbinary(fp) | ||
Matt Mackall
|
r6433 | |||
Matt Harbison
|
r39983 | def binopen(path, mode=b'rb'): | ||
if b'b' not in mode: | ||||
mode = mode + b'b' | ||||
return open(path, pycompat.sysstr(mode)) | ||||
def printb(data, end=b'\n'): | ||||
sys.stdout.flush() | ||||
pycompat.stdout.write(data + end) | ||||
Boris Feld
|
r35982 | |||
Matt Mackall
|
r6433 | for f in sys.argv[1:]: | ||
Matt Harbison
|
r39983 | r = revlog.revlog(binopen, encoding.strtolocal(f)) | ||
Pulkit Goyal
|
r29166 | print("file:", f) | ||
Matt Mackall
|
r6750 | for i in r: | ||
Matt Mackall
|
r6433 | n = r.node(i) | ||
p = r.parents(n) | ||||
d = r.revision(n) | ||||
Matt Harbison
|
r39983 | printb(b"node: %s" % node.hex(n)) | ||
printb(b"linkrev: %d" % r.linkrev(i)) | ||||
printb(b"parents: %s %s" % (node.hex(p[0]), node.hex(p[1]))) | ||||
printb(b"length: %d" % len(d)) | ||||
printb(b"-start-") | ||||
printb(d) | ||||
printb(b"-end-") | ||||