mercurial/branchmap.py
changeset 41566 eb7ce452e0fb
parent 41565 bf7fb97aecf1
child 41567 c795c462b1d6
equal deleted inserted replaced
41565:bf7fb97aecf1 41566:eb7ce452e0fb
    61                 extrarevs = subset.changelog.filteredrevs - cl.filteredrevs
    61                 extrarevs = subset.changelog.filteredrevs - cl.filteredrevs
    62                 revs.extend(r for  r in extrarevs if r <= bcache.tiprev)
    62                 revs.extend(r for  r in extrarevs if r <= bcache.tiprev)
    63     revs.extend(cl.revs(start=bcache.tiprev + 1))
    63     revs.extend(cl.revs(start=bcache.tiprev + 1))
    64     if revs:
    64     if revs:
    65         bcache.update(repo, revs)
    65         bcache.update(repo, revs)
    66         bcache.write(repo)
       
    67 
    66 
    68     assert bcache.validfor(repo), filtername
    67     assert bcache.validfor(repo), filtername
    69     repo._branchcaches[repo.filtername] = bcache
    68     repo._branchcaches[repo.filtername] = bcache
    70 
    69 
    71 def replacecache(repo, bm):
    70 def replacecache(repo, bm):
   240         for bn, heads in self.iteritems():
   239         for bn, heads in self.iteritems():
   241             yield (bn, heads) + self._branchtip(heads)
   240             yield (bn, heads) + self._branchtip(heads)
   242 
   241 
   243     def copy(self):
   242     def copy(self):
   244         """return an deep copy of the branchcache object"""
   243         """return an deep copy of the branchcache object"""
   245         return branchcache(self, self.tipnode, self.tiprev, self.filteredhash,
   244         return type(self)(
   246                            self._closednodes)
   245             self, self.tipnode, self.tiprev, self.filteredhash,
       
   246             self._closednodes)
   247 
   247 
   248     def write(self, repo):
   248     def write(self, repo):
   249         try:
   249         try:
   250             f = repo.cachevfs(self._filename(repo), "w", atomictemp=True)
   250             f = repo.cachevfs(self._filename(repo), "w", atomictemp=True)
   251             cachekey = [hex(self.tipnode), '%d' % self.tiprev]
   251             cachekey = [hex(self.tipnode), '%d' % self.tiprev]
   329         self.filteredhash = scmutil.filteredhash(repo, self.tiprev)
   329         self.filteredhash = scmutil.filteredhash(repo, self.tiprev)
   330 
   330 
   331         duration = util.timer() - starttime
   331         duration = util.timer() - starttime
   332         repo.ui.log('branchcache', 'updated %s branch cache in %.4f seconds\n',
   332         repo.ui.log('branchcache', 'updated %s branch cache in %.4f seconds\n',
   333                     repo.filtername, duration)
   333                     repo.filtername, duration)
       
   334 
       
   335         self.write(repo)
       
   336 
       
   337 
       
   338 class remotebranchcache(branchcache):
       
   339     """Branchmap info for a remote connection, should not write locally"""
       
   340     def write(self, repo):
       
   341         pass
       
   342 
   334 
   343 
   335 # Revision branch info cache
   344 # Revision branch info cache
   336 
   345 
   337 _rbcversion = '-v1'
   346 _rbcversion = '-v1'
   338 _rbcnames = 'rbc-names' + _rbcversion
   347 _rbcnames = 'rbc-names' + _rbcversion