Mercurial > hg
view contrib/undumprevlog @ 42520:898b36f74f75
copies: document how 'copies' dict instances are reused
We avoid copying these instances as much as we can, so it's not
obvious what's safe to do with them. This patch tries to explain what
is safe and what is not.
Differential Revision: https://phab.mercurial-scm.org/D6578
author | Martin von Zweigbergk <martinvonz@google.com> |
---|---|
date | Wed, 26 Jun 2019 05:20:02 -0700 |
parents | a063b84ce064 |
children | 99e231afc29c |
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 ( encoding, node, pycompat, 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(b'.', False) tr = transaction.transaction(sys.stderr.write, opener, {b'store': opener}, b"undump.journal") while True: l = sys.stdin.readline() if not l: break if l.startswith("file:"): f = encoding.strtolocal(l[6:-1]) r = revlog.revlog(opener, f) pycompat.stdout.write(b'%s\n' % 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 = encoding.strtolocal(sys.stdin.read(length)) sys.stdin.readline() # end marker r.addrevision(d, tr, lr, p1, p2) tr.close()