Mercurial > hgsubversion
view tag_repo.py @ 313:942f198b8ff5
hg_delta_editor: detect new branches issued from non-branch directories
This fix solves the following case: let's /dumb/layout/project be an existing
project. To normalize the trunk/branches/tags layout, people may do:
$ mkdir /project
$ mv /dumb/layout/project /project/project
# Oups, should have been trunk!
$ mv /project/project /project/trunk
trunk creation was ignore because:
- update_branch_map() sees it come from a non-branch copy source and ignores it
(case #3).
- since it is not in self.branches, add_directory() ignores the non-existing path.
Then trunk is left uninitialized.
To solve this, we allow update_branch_map() to detect branches copied from
non-canonical locations.
author | Patrick Mezard <pmezard@gmail.com> |
---|---|
date | Sun, 03 May 2009 21:42:42 -0500 |
parents | 91c818377703 |
children | 33736e2e25f0 |
line wrap: on
line source
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