Mercurial > hg
view contrib/dumprevlog @ 48549:28f0092ec89f
exchange: add fast path for subrepo check on push
Try to check if .hgsub and .hgsubstate exist at all before looking
for them in every changeset to be pushed. The latter can be quite
expensive for large repositories and the existance check is almost free.
Differential Revision: https://phab.mercurial-scm.org/D11956
author | Joerg Sonnenberger <joerg@bec.de> |
---|---|
date | Mon, 03 Jan 2022 01:09:56 +0100 |
parents | 5d5abfdc32d8 |
children | 6000f5b25c9b |
line wrap: on
line source
#!/usr/bin/env python3 # Dump revlogs as raw data stream # $ find .hg/store/ -name "*.i" | xargs dumprevlog > repo.dump from __future__ import absolute_import, print_function 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-")