Mercurial > hg
view contrib/undumprevlog @ 38634:f0ea8b847831
revlog: early return in _slicechunk when density is already good
We don't need to do anything if we know we won't enter the second while loop.
Save the overhead of the first loop by returning earlier.
author | Paul Morelle <paul.morelle@octobus.net> |
---|---|
date | Tue, 19 Jun 2018 15:03:58 +0200 |
parents | a8a902d7176e |
children | a063b84ce064 |
line wrap: on
line source
#!/usr/bin/env python # Undump a dump from dumprevlog # $ hg init # $ undumprevlog < repo.dump from __future__ import absolute_import, print_function import sys from mercurial import ( node, revlog, transaction, vfs as vfsmod, ) from mercurial.utils import ( procutil, ) for fp in (sys.stdin, sys.stdout, sys.stderr): procutil.setbinary(fp) opener = vfsmod.vfs('.', False) tr = transaction.transaction(sys.stderr.write, opener, {'store': opener}, "undump.journal") while True: l = sys.stdin.readline() if not l: break if l.startswith("file:"): f = l[6:-1] r = revlog.revlog(opener, f) print(f) elif l.startswith("node:"): n = node.bin(l[6:-1]) elif l.startswith("linkrev:"): lr = int(l[9:-1]) elif l.startswith("parents:"): p = l[9:-1].split() p1 = node.bin(p[0]) p2 = node.bin(p[1]) elif l.startswith("length:"): length = int(l[8:-1]) sys.stdin.readline() # start marker d = sys.stdin.read(length) sys.stdin.readline() # end marker r.addrevision(d, tr, lr, p1, p2) tr.close()