Mercurial > hg
view contrib/dumprevlog @ 39939:e85462d48cb3 stable
manifest: rewrite pathlen() to not cross entry boundary
Even though the entire manifest data should be terminated by '\0', it seems
not nice to scan '\0' over the entry terminator, '\n'.
author | Yuya Nishihara <yuya@tcha.org> |
---|---|
date | Wed, 05 Sep 2018 21:32:45 +0900 |
parents | a8a902d7176e |
children | a063b84ce064 |
line wrap: on
line source
#!/usr/bin/env python # 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 import ( node, revlog, ) from mercurial.utils import ( procutil, ) for fp in (sys.stdin, sys.stdout, sys.stderr): procutil.setbinary(fp) def binopen(path, mode='rb'): if 'b' not in mode: mode = mode + 'b' return open(path, mode) for f in sys.argv[1:]: r = revlog.revlog(binopen, f) print("file:", f) for i in r: n = r.node(i) p = r.parents(n) d = r.revision(n) print("node:", node.hex(n)) print("linkrev:", r.linkrev(i)) print("parents:", node.hex(p[0]), node.hex(p[1])) print("length:", len(d)) print("-start-") print(d) print("-end-")