Ticket #2: bzrpoller-working.patch

File bzrpoller-working.patch, 2.4 kB (added by ijon, 10 months ago)

changes to get it work (in simplest scenario -- single branch)

  • bzrpoller.py

    old new  
    1515    implements(interfaces.IChangeSource) 
    1616 
    1717    compare_attrs = ["location", "pollinterval"] 
    18                       
     18 
    1919 
    2020    parent = None # filled in when we're added 
    21     last_change = None 
     21    last_revno = None 
    2222    loop = None 
    2323    working = False 
    2424 
     
    5050    def poll(self): 
    5151        log.msg("BzrPoller polling") 
    5252        # location="http://bazaar-vcs.org/bzr/bzr.dev" 
    53         b = Branch.open_containing(self.url)[0] 
     53        b = Branch.open_containing(self.location)[0] 
    5454        # this is subclass of bzrlib.branch.Branch 
    55         current_revision = b.revno() 
     55        current_revno = b.revno() 
     56        if self.last_revno is None: 
     57            self.last_revno = current_revno 
     58            log.msg('BzrPoller: starting at %s' % (self.last_revno)) 
     59            return 
     60        if current_revno == self.last_revno: 
     61            log.msg('BzrPoller: no new revisions since %s' % (self.last_revno)) 
     62            return 
    5663        # NOTE: b.revision_history() does network IO, and is blocking. 
    57         revisions = b.revision_history()[last_revno:] # each is an id string 
     64        revisions = b.revision_history()[self.last_revno:current_revno] # each is an id string 
    5865        changes = [] 
    59         for r in revisions: 
     66        # any way in bzrlib to get revno from revision_id? 
     67        # revnos in a branch are sequential, without gaps 
     68        for r, revno in zip(revisions, xrange(self.last_revno+1, current_revno+1)): 
    6069            rev = b.repository.get_revision(r) 
    61             # bzrlib.revision.Revision 
    6270            who = rev.committer 
    6371            comments = rev.message 
    6472            when = rev.timestamp 
     
    7280                     [f[0] for f in d.modified] 
    7381                     ) 
    7482 
    75             # revision= ? 
    7683            # branch= ? 
    77             c = Change(who=rev.committer
     84            c = Change(who=who
    7885                       files=files, 
    79                        comments=rev.message, 
    80                        when=rev.timestamp, 
     86                       comments=comments, 
     87                       revision=revno, 
     88                       when=when, 
    8189                       ) 
    8290            changes.append(c) 
    8391        for c in changes: 
    8492            self.parent.addChange(c) 
     93        self.last_revno = current_revno 
    8594        log.msg("BzrPoller finished polling, %d changes found" % len(changes))