view tests/revlog-formatv0.py @ 28489:8939a95064f1

changelog: lazily parse description Before, the description field was converted to a localstr at parse time. With this patch, we store the raw description and convert to a localstr when it is first accessed. We see a revset speedup for revsets that don't access the description: author(mpm) 0.896565 0.914234 0.869085 date(2015) 0.878797 0.891980 0.862525 extra(rebase_source) 0.865446 0.912514 0.871500 author(mpm) or author(greg) 1.801832 1.860402 1.791589 date(2015) or branch(default) 0.968276 0.994673 0.974027 author(mpm) or desc(bug) or date(2015) or extra(rebase_source) 3.656193 3.721032 3.643593 As you can see, most of these revsets are already faster than from before this refactoring: we have already offset the performance loss from the introduction of the new class representing parsed changelog entries!
author Gregory Szorc <gregory.szorc@gmail.com>
date Sun, 06 Mar 2016 14:28:46 -0800
parents 581066a319e5
children 05982f7ab231
line wrap: on
line source

#!/usr/bin/env python
# Copyright 2010 Intevation GmbH
# Author(s):
# Thomas Arendsen Hein <thomas@intevation.de>
#
# This software may be used and distributed according to the terms of the
# GNU General Public License version 2 or any later version.

"""Create a Mercurial repository in revlog format 0

changeset:   0:a1ef0b125355
tag:         tip
user:        user
date:        Thu Jan 01 00:00:00 1970 +0000
files:       empty
description:
empty file
"""

import os, sys

files = [
    ('formatv0/.hg/00changelog.i',
     '000000000000004400000000000000000000000000000000000000'
     '000000000000000000000000000000000000000000000000000000'
     '0000a1ef0b125355d27765928be600cfe85784284ab3'),
    ('formatv0/.hg/00changelog.d',
     '756163613935613961356635353036303562366138343738336237'
     '61623536363738616436356635380a757365720a3020300a656d70'
     '74790a0a656d7074792066696c65'),
    ('formatv0/.hg/00manifest.i',
     '000000000000003000000000000000000000000000000000000000'
     '000000000000000000000000000000000000000000000000000000'
     '0000aca95a9a5f550605b6a84783b7ab56678ad65f58'),
    ('formatv0/.hg/00manifest.d',
     '75656d707479006238306465356431333837353835343163356630'
     '35323635616431343461623966613836643164620a'),
    ('formatv0/.hg/data/empty.i',
     '000000000000000000000000000000000000000000000000000000'
     '000000000000000000000000000000000000000000000000000000'
     '0000b80de5d138758541c5f05265ad144ab9fa86d1db'),
    ('formatv0/.hg/data/empty.d',
     ''),
]

def makedirs(name):
    """recursive directory creation"""
    parent = os.path.dirname(name)
    if parent:
        makedirs(parent)
    os.mkdir(name)

makedirs(os.path.join(*'formatv0/.hg/data'.split('/')))

for name, data in files:
    f = open(name, 'wb')
    f.write(data.decode('hex'))
    f.close()

sys.exit(0)