def repository(self, uri): cursor = self.cursor cursor.execute(statement("SELECT id from repositories where uri = ?", self.db.place_holder), (uri,)) self.repo_id = cursor.fetchone()[0] last_rev = last_commit = None query = "SELECT rev, id from scmlog " + "where id = (select max(id) from scmlog where repository_id = ?)" cursor.execute(statement(query, self.db.place_holder), (self.repo_id,)) rs = cursor.fetchone() if rs is not None: last_rev, last_commit = rs filename = uri.replace("/", "_") self.cache_file = os.path.join(cvsanaly_cache_dir(), filename) # if there's a previous cache file, just use it if os.path.isfile(self.cache_file): self.__load_caches_from_disk() if last_rev is not None: try: commit_id = self.revision_cache[last_rev] except KeyError: msg = ( "Cache file %s is not up to date or it's corrupt: " % (self.cache_file) + "Revision %s was not found in the cache file" % (last_rev) + "It's not possible to continue, the cache " + "file should be removed and the database cleaned up" ) raise CacheFileMismatch(msg) if commit_id != last_commit: # Cache and db don't match, removing cache msg = ( "Cache file %s is not up to date or it's corrupt: " % (self.cache_file) + "Commit id mismatch for revision %s (File Cache:%d, Database: %d). " % (last_rev, commit_id, last_commit) + "It's not possible to continue, the cache " + "file should be removed and the database cleaned up" ) raise CacheFileMismatch(msg) else: # Database looks empty (or corrupt) and we have # a cache file. We can just remove it and continue # normally self.__init_caches() os.remove(self.cache_file) printout("Database looks empty, removing cache file %s", (self.cache_file,)) elif last_rev is not None: # There are data in the database, # but we don't have a cache file!!! msg = ( "Cache file %s is not up to date or it's corrupt: " % (self.cache_file) + "Cache file cannot be found" + "It's not possible to continue, the database " + "should be cleaned up" ) raise CacheFileMismatch(msg)
def repository(self, uri): cursor = self.cursor cursor.execute( statement("SELECT id from repositories where uri = ?", self.db.place_holder), (uri, )) self.repo_id = cursor.fetchone()[0] last_rev = last_commit = None query = "SELECT rev, id from scmlog " + \ "where id = (select max(id) from scmlog where repository_id = ?)" cursor.execute(statement(query, self.db.place_holder), (self.repo_id, )) rs = cursor.fetchone() if rs is not None: last_rev, last_commit = rs filename = uri.replace('/', '_') self.cache_file = os.path.join(cvsanaly_cache_dir(), filename) # if there's a previous cache file, just use it if os.path.isfile(self.cache_file): self.__load_caches_from_disk() if last_rev is not None: try: commit_id = self.revision_cache[last_rev] except KeyError: msg = "Cache file %s is not up to date or it's corrupt: " % (self.cache_file) + \ "Revision %s was not found in the cache file" % (last_rev) + \ "It's not possible to continue, the cache " + \ "file should be removed and the database cleaned up" raise CacheFileMismatch(msg) if commit_id != last_commit: # Cache and db don't match, removing cache msg = "Cache file %s is not up to date or it's corrupt: " % (self.cache_file) + \ "Commit id mismatch for revision %s (File Cache:%d, Database: %d). " % ( last_rev, commit_id, last_commit) + \ "It's not possible to continue, the cache " + \ "file should be removed and the database cleaned up" raise CacheFileMismatch(msg) else: # Database looks empty (or corrupt) and we have # a cache file. We can just remove it and continue # normally self.__init_caches() os.remove(self.cache_file) printout("Database looks empty, removing cache file %s", (self.cache_file, )) elif last_rev is not None: # There are data in the database, # but we don't have a cache file!!! msg = "Cache file %s is not up to date or it's corrupt: " % (self.cache_file) + \ "Cache file cannot be found" + \ "It's not possible to continue, the database " + \ "should be cleaned up" raise CacheFileMismatch(msg)