Changeset 144 in tracdarcs


Ignore:
Timestamp:
04/24/09 02:10:00 (4 years ago)
Author:
lele@…
Hash name:
20090424001000-97f81-a7483e7d32c4703249860876c6f3f0974a17b112
Message:

Show a link to the same changeset in other repositories

Location:
tracdarcs
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • tracdarcs/__init__.py

    r143 r144  
    2222    __version__ = "0.7" 
    2323 
    24 from tracdarcs.components import DarcsConnector, DarcsSetup 
     24from tracdarcs.components import DarcsConnector, DarcsSetup, \ 
     25     EquivalentChangesetsRenderer 
  • tracdarcs/components.py

    r139 r144  
    2222from trac.util.text import shorten_line 
    2323from trac.versioncontrol import IRepositoryConnector, NoSuchChangeset 
     24from trac.versioncontrol.web_ui import IPropertyRenderer, RenderedProperty 
     25 
    2426from trac.wiki import IWikiSyntaxProvider 
    2527 
     
    162164            for stmt in connector.to_sql(t): 
    163165                c.execute(stmt) 
     166 
     167class EquivalentChangesetsRenderer(Component): 
     168    implements(IPropertyRenderer) 
     169 
     170    def match_property(self, name, mode): 
     171        return (mode == 'revprop' and name == 'EqChangesets') and 5 or 0 
     172 
     173    def render_property(self, name, mode, context, props): 
     174        eqcsets = props[name] 
     175        eqlinks = [tag.a(repos or '(default)', class_="changeset", 
     176                         title="Equivalent patch %s in repository %s" % ( 
     177                             rev, repos or '(default)'), 
     178                         href=context.href.changeset(rev, repos)) 
     179                   for repos, rev in eqcsets] 
     180        return RenderedProperty(name='Present in:', 
     181                                name_attributes=[("class", "property")], 
     182                                content=tag([eqlinks])) 
  • tracdarcs/repository.py

    r140 r144  
    451451        # "Content-Encoding: gzip" that in turn may confuse the browser. 
    452452        # Darcs recognizes also extension-stripped hashnames. 
    453         return dict(Hashname=self.__hash[:-3]) 
     453 
     454        props = dict(Hashname=self.__hash[:-3]) 
     455 
     456        c = self.__db.cursor() 
     457        c.execute('SELECT dcs.repo_id, dcs.rev ' 
     458                  'FROM darcs_changesets dcs, darcs_changesets dcs2 ' 
     459                  'WHERE dcs2.repo_id = %s AND dcs2.rev = %s ' 
     460                  '  AND dcs.hash = dcs2.hash ' 
     461                  '  AND dcs.repo_id <> dcs2.repo_id', (self.repo_id, self.rev)) 
     462        eqcsets = [(repo, rev) for repo,rev in c.fetchall()] 
     463        if eqcsets: 
     464            props['EqChangesets'] = eqcsets 
     465 
     466        return props 
Note: See TracChangeset for help on using the changeset viewer.