dumprevlog
47 lines
| 1.1 KiB
| text/plain
|
TextLexer
/ contrib / dumprevlog
|
r6433 | #!/usr/bin/env python | ||
# Dump revlogs as raw data stream | ||||
# $ find .hg/store/ -name "*.i" | xargs dumprevlog > repo.dump | ||||
|
r29166 | from __future__ import absolute_import, print_function | ||
|
r29165 | |||
|
r6433 | import sys | ||
|
r29165 | from mercurial import ( | ||
|
r39983 | encoding, | ||
|
r29165 | node, | ||
|
r39983 | pycompat, | ||
|
r29165 | revlog, | ||
|
r37138 | ) | ||
|
r44058 | from mercurial.utils import procutil | ||
|
r6466 | |||
for fp in (sys.stdin, sys.stdout, sys.stderr): | ||||
|
r37138 | procutil.setbinary(fp) | ||
|
r6433 | |||
|
r44058 | |||
|
r39983 | def binopen(path, mode=b'rb'): | ||
if b'b' not in mode: | ||||
mode = mode + b'b' | ||||
return open(path, pycompat.sysstr(mode)) | ||||
|
r44058 | |||
r43295 | binopen.options = {} | |||
|
r39983 | |||
|
r44058 | |||
|
r39983 | def printb(data, end=b'\n'): | ||
sys.stdout.flush() | ||||
|
r45598 | procutil.stdout.write(data + end) | ||
|
r35982 | |||
|
r44058 | |||
|
r6433 | for f in sys.argv[1:]: | ||
|
r39983 | r = revlog.revlog(binopen, encoding.strtolocal(f)) | ||
|
r29166 | print("file:", f) | ||
|
r6750 | for i in r: | ||
|
r6433 | n = r.node(i) | ||
p = r.parents(n) | ||||
d = r.revision(n) | ||||
|
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-") | ||||