Mercurial > hg
view contrib/dumprevlog @ 50185:99296ca9f29e
narrow: get the narrow patterns from the repository object instead of disk
Relying on disk data make the transactionally of this change complicated, so
let us start reading data from other API instead.
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Thu, 23 Feb 2023 04:02:38 +0100 |
parents | 6000f5b25c9b |
children |
line wrap: on
line source
#!/usr/bin/env python3 # Dump revlogs as raw data stream # $ find .hg/store/ -name "*.i" | xargs dumprevlog > repo.dump import sys from mercurial.node import hex from mercurial import ( encoding, pycompat, revlog, ) from mercurial.utils import procutil from mercurial.revlogutils import ( constants as revlog_constants, ) for fp in (sys.stdin, sys.stdout, sys.stderr): procutil.setbinary(fp) def binopen(path, mode=b'rb'): if b'b' not in mode: mode = mode + b'b' return open(path, pycompat.sysstr(mode)) binopen.options = {} def printb(data, end=b'\n'): sys.stdout.flush() procutil.stdout.write(data + end) for f in sys.argv[1:]: localf = encoding.strtolocal(f) if not localf.endswith(b'.i'): print("file:", f, file=sys.stderr) print(" invalid filename", file=sys.stderr) r = revlog.revlog( binopen, target=(revlog_constants.KIND_OTHER, b'dump-revlog'), radix=localf[:-2], ) print("file:", f) for i in r: n = r.node(i) p = r.parents(n) d = r.revision(n) printb(b"node: %s" % hex(n)) printb(b"linkrev: %d" % r.linkrev(i)) printb(b"parents: %s %s" % (hex(p[0]), hex(p[1]))) printb(b"length: %d" % len(d)) printb(b"-start-") printb(d) printb(b"-end-")