view contrib/undumprevlog @ 40043:6509fcec830c

url: allow to configure timeout on http connection By default, httplib.HTTPConnection opens connection with no timeout. If the server is hanging, Mercurial will wait indefinitely. This may be an issue for automated scripts. Differential Revision: https://phab.mercurial-scm.org/D4878
author Cédric Krier <ced@b2ck.com>
date Thu, 04 Oct 2018 11:28:48 +0200
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()