dumprevlog
60 lines
| 1.4 KiB
| text/plain
|
TextLexer
/ contrib / dumprevlog
|
r46434 | #!/usr/bin/env python3 | ||
|
r6433 | # 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 | ||
|
r46729 | from mercurial.node import hex | ||
|
r29165 | from mercurial import ( | ||
|
r39983 | encoding, | ||
pycompat, | ||||
|
r29165 | revlog, | ||
|
r37138 | ) | ||
|
r44058 | from mercurial.utils import procutil | ||
|
r6466 | |||
r47838 | from mercurial.revlogutils import ( | |||
constants as revlog_constants, | ||||
) | ||||
|
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:]: | ||
r47921 | localf = encoding.strtolocal(f) | |||
if not localf.endswith(b'.i'): | ||||
print("file:", f, file=sys.stderr) | ||||
print(" invalida filename", file=sys.stderr) | ||||
r47838 | r = revlog.revlog( | |||
binopen, | ||||
target=(revlog_constants.KIND_OTHER, b'dump-revlog'), | ||||
r47921 | radix=localf[:-2], | |||
r47838 | ) | |||
|
r29166 | print("file:", f) | ||
|
r6750 | for i in r: | ||
|
r6433 | n = r.node(i) | ||
p = r.parents(n) | ||||
d = r.revision(n) | ||||
|
r46729 | printb(b"node: %s" % hex(n)) | ||
|
r39983 | printb(b"linkrev: %d" % r.linkrev(i)) | ||
|
r46729 | printb(b"parents: %s %s" % (hex(p[0]), hex(p[1]))) | ||
|
r39983 | printb(b"length: %d" % len(d)) | ||
printb(b"-start-") | ||||
printb(d) | ||||
printb(b"-end-") | ||||