= Interface Trac to multiple Hg repositores = == Deprecated == Now that [http://trac.edgewall.org/wiki/TracMercurial TracMercurial] supports multiple repositories, I consider this plugin to be obsolete. We currently use the following plugin to preserve HgTimelinePlugin-style wiki links: {{{ !#python from genshi.builder import tag from trac.core import * from trac.util.datefmt import utc from trac.util.text import to_unicode, shorten_line from trac.wiki import format_to_html from trac.wiki.api import IWikiSyntaxProvider from trac.versioncontrol.api import RepositoryManager, NoSuchChangeset # The component class MultiRepoWikiFormatting(Component): implements(IWikiSyntaxProvider) def __init__(self): self.rm = RepositoryManager(self.env) self.repos = self.rm.get_all_repositories().keys() # IWikiSyntaxProvider methods def get_wiki_syntax(self): return [] def get_link_resolvers(self): for repo in self.repos: self.log.debug('Link resolver for %s added' % repo) yield repo, self._format_link def _format_link(self, formatter, repo, rev, label): repo = self.rm.get_repository(repo) href = '/changeset/%s/%s' % (rev, repo.reponame) try: cset = repo.get_changeset(rev) text = shorten_line(cset.message) return tag.a(label, class_='changeset', href=href, title=text) except NoSuchChangeset as e: text = to_unicode('No such changeset: %s' % rev) return tag.a(label, class_='missing changeset', rel='nofollow', href=href, title=text) }}} If you still use this plugin, I'm happy to field pull requests on [https://bitbucket.org/kentyde/hgtimelineplugin Bitbucket] (including the above plugin, which I've added to the repository). == Description == !HgTimeline is an alternative to the [http://trac.edgewall.org/wiki/TracMercurial TracMercurial] plugin, which makes [http://www.selenic.com/mercurial/ Mercurial] repositories accessible from Trac. [http://trac.edgewall.org/wiki/TracMercurial TracMercurial] provides a very well-done plugin that tries to emulate the standard Subversion interface where it makes sense and diverges from it where Mercurial requires a different feature set. The way Trac currently works, though, means that you can only provide an interface to one Mercurial repository at a time. This plugin tries to provide access from Trac to several different Mercurial clones (whether they belong to one or more projects). This is done by not using the default Trac browser anymore, and instead linking to external hgweb instances (the web interface provided with Mercurial) from the timeline and through wiki syntax. Therefore, only use this plugin if you want to connect your Trac to multiple Mercurial clones or projects or if you prefer to use hgweb rather than Trac's own source browser. Additionally, the plugin can be useful for keeping track of Mercurial repositories alongside an existing Subversion repository. == Bugs/Feature Requests == Existing bugs and feature requests for HgTimelinePlugin are [query:?status=new&status=assigned&status=reopened&group=&component=HgTimelinePlugin&order=priority here]. If you have any issues, create a [http://trac-hacks.org/newticket?component=HgTimelinePlugin&owner=djc new ticket]. == Download and Source == This plugin now lives on [https://bitbucket.org/kentyde/hgtimelineplugin Bitbucket]. It requires Trac 0.11 (and probably some older version of Mercurial). == Example == Sample configuration needed in trac.ini: {{{ [components] trac.versioncontrol.* = disabled hgtl.* = enabled [hg-timeline] web.href = http://example.com/hg/ proj1-user = /home/user/src/proj1 proj2-user = /home/user/src/proj2 proj1-jdoe = /home/jdoe/src/proj1 }}} == Author/Contributors == '''Author:''' [wiki:djc Dirkjan Ochtman]