hgext/sparse.py
changeset 33295 c72e9c61d2b1
parent 33294 a5921ad2eb99
child 33296 ee616196227c
equal deleted inserted replaced
33294:a5921ad2eb99 33295:c72e9c61d2b1
   491         def getrawprofile(self, profile, changeid):
   491         def getrawprofile(self, profile, changeid):
   492             # TODO add some kind of cache here because this incurs a manifest
   492             # TODO add some kind of cache here because this incurs a manifest
   493             # resolve and can be slow.
   493             # resolve and can be slow.
   494             return self.filectx(profile, changeid=changeid).data()
   494             return self.filectx(profile, changeid=changeid).data()
   495 
   495 
   496         def sparsechecksum(self, filepath):
   496         def _sparsechecksum(self, path):
   497             fh = open(filepath)
   497             data = self.vfs.read(path)
   498             return hashlib.sha1(fh.read()).hexdigest()
   498             return hashlib.sha1(data).hexdigest()
   499 
   499 
   500         def _sparsesignature(self, includetemp=True):
   500         def _sparsesignature(self, includetemp=True):
   501             """Returns the signature string representing the contents of the
   501             """Returns the signature string representing the contents of the
   502             current project sparse configuration. This can be used to cache the
   502             current project sparse configuration. This can be used to cache the
   503             sparse matcher for a given set of revs."""
   503             sparse matcher for a given set of revs."""
   509                 tempsignature = 0
   509                 tempsignature = 0
   510 
   510 
   511             if signature is None or (includetemp and tempsignature is None):
   511             if signature is None or (includetemp and tempsignature is None):
   512                 signature = 0
   512                 signature = 0
   513                 try:
   513                 try:
   514                     sparsepath = self.vfs.join('sparse')
   514                     signature = self._sparsechecksum('sparse')
   515                     signature = self.sparsechecksum(sparsepath)
       
   516                 except (OSError, IOError):
   515                 except (OSError, IOError):
   517                     pass
   516                     pass
   518                 signaturecache['signature'] = signature
   517                 signaturecache['signature'] = signature
   519 
   518 
   520                 tempsignature = 0
   519                 tempsignature = 0
   521                 if includetemp:
   520                 if includetemp:
   522                     try:
   521                     try:
   523                         tempsparsepath = self.vfs.join('tempsparse')
   522                         tempsignature = self._sparsechecksum('tempsparse')
   524                         tempsignature = self.sparsechecksum(tempsparsepath)
       
   525                     except (OSError, IOError):
   523                     except (OSError, IOError):
   526                         pass
   524                         pass
   527                     signaturecache['tempsignature'] = tempsignature
   525                     signaturecache['tempsignature'] = tempsignature
   528             return '%s %s' % (str(signature), str(tempsignature))
   526             return '%s %s' % (str(signature), str(tempsignature))
   529 
   527