view tag_repo.py @ 131:4d42dbbb5127

hg_delta_editor: fix parent revision detection on branch copy Project items copyfrom revisions are irrelevant to parent revision detection, only the project one or those of its ancestors matter. Items copyfrom is useful when retrieving items content. Former code resulted in incorrect converted graph for pyglet repository, especially on the following revision: ------------------------------------------------------------------------ r274 | r1chardj0n3s | 2006-12-21 02:02:14 +0100 (Jeu, 21 Dec 2006) | 2 lines Changed paths: A /branches/richard-glx-version (from /trunk:269) M /branches/richard-glx-version/pyglet/window/xlib/__init__.py R /branches/richard-glx-version/tests/test.py (from /trunk/tests/test.py:270) R /branches/richard-glx-version/tools/info.py (from /trunk/tools/info.py:272) R /branches/richard-glx-version/website/get_involved.php (from /trunk/website/get_involved.php:273) Branching to horribly mangle GLX
author Patrick Mezard <pmezard@gmail.com>
date Wed, 10 Dec 2008 11:03:22 -0600
parents 291925677a9f
children 91c818377703
line wrap: on
line source

import pickle

from mercurial import node

import hg_delta_editor


def tags_from_tag_info(repo):
    hg_editor = hg_delta_editor.HgChangeReceiver(repo=repo)
    for tag, source in hg_editor.tags.iteritems():
        source_ha = hg_editor.get_parent_revision(source[1]+1, source[0])
        yield 'tag/%s'%tag, node.hex(source_ha)


def generate_repo_class(ui, repo):

    class svntagrepo(repo.__class__):
        def tags(self):
            tags = dict((k, node.bin(v))
                        for k,v in tags_from_tag_info(self))
            hg_tags = super(svntagrepo, self).tags()
            tags.update(hg_tags)
            return tags

    return svntagrepo