Changeset 195 in tracdarcs for tracdarcs/components.py
- Timestamp:
- 07/10/10 12:36:23 (23 months ago)
- Hash name:
- 20100710103623-7a6fb-e8c432b79b5bd5212ed5e8c22e1f24e4c4dc5ea9
- File:
-
- 1 edited
-
tracdarcs/components.py (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
tracdarcs/components.py
r185 r195 20 20 from trac.db import Column, DatabaseManager, Index, Table 21 21 from trac.env import IEnvironmentSetupParticipant 22 from trac.util.text import shorten_line 22 from trac.util.text import shorten_line, to_unicode 23 23 from trac.versioncontrol import IRepositoryConnector, NoSuchChangeset 24 24 from trac.versioncontrol.web_ui import IPropertyRenderer, RenderedProperty … … 86 86 87 87 def _format_link(self, formatter, ns, rev, label): 88 89 repos = self.env.get_repository() 90 try: 91 chgset = repos.get_changeset(rev) 92 return tag.a(chgset.rev, class_="changeset", 93 title=shorten_line(chgset.message), 94 href=formatter.href.changeset(chgset.rev)) 95 except NoSuchChangeset, e: 96 return tag.a(label, class_="missing changeset", 97 title="No changeset for %s" % rev, rel="nofollow") 88 reponame = None 89 90 # See if the context carries a repository... 91 context = formatter.context 92 while context: 93 if context.resource.realm in ('source', 'changeset'): 94 reponame = context.resource.parent.id 95 break 96 context = context.parent 97 98 # If it does not, take the first repository containing the 99 # specified revision, if any. We can do this assuming that 100 # a) we are dealing with full darcs hashes and 101 # b) darcs hashes are globally unique 102 if reponame is None: 103 db = self.env.get_db_cnx() 104 c = db.cursor() 105 c.execute('SELECT r.value ' 106 'FROM darcs_changesets c JOIN repository r ON c.repo_id = r.id ' 107 'WHERE c.hash = %s AND r.name = %s ' 108 'ORDER BY r.id ' 109 'LIMIT 1', (rev, 'name',)) 110 row = c.fetchone() 111 reponame = row and row[0] or '' 112 113 repos = self.env.get_repository(reponame) 114 if repos: 115 try: 116 chgset = repos.get_changeset(rev) 117 return tag.a(chgset.rev, class_="changeset", 118 title=shorten_line(chgset.message), 119 href=formatter.href.changeset(chgset.rev, reponame)) 120 except NoSuchChangeset, e: 121 errmsg = to_unicode(e) 122 else: 123 errmsg = 'Repository "%s" not found' % reponame 124 125 return tag.a(label, class_="missing changeset", title=errmsg, rel="nofollow") 98 126 99 127 class DarcsSetup(Component):
Note: See TracChangeset
for help on using the changeset viewer.