Ejemplo n.º 1
0
 def compute_blame(self):
     """ Вычисляет информацию об авторстве для всех файлов и коммитов
         в репозитории
     """
     # вычисление должно идти от более старых коммитов к более новым,
     # т.к. новые используют информацию об авторстве из старых
     for i, sha1 in enumerate(self.commit_order[::-1]):
         commit = self.commits[sha1]
         if commit.snapshot_blame is not None:
             continue # пропускаем коммиты, обработанные при прошлой загрузке
         # данные об авторстве файлов, измененных в этом коммите
         for file_path, _, __ in commit.changes:
             if self.ignore_file(file_path):
                 continue
             try:
                 blame = cmds.blame_stats(self.path, file_path, commit.sha1)
             except Exception as e:
                 if 'no such path' in unicode(e):
                     blame = None
                 else:
                     raise
             commit.blames[file_path] = blame
         
         # интеграция данных
         commit.compute_snapshot_blame()
         print "completed", i, "of", len(self.commit_order)
Ejemplo n.º 2
0
 def blame_stats(self, file_path, rev_sha1):
     """ Число строк, принадлежащих каждому автору, в конкретном файле
         и ревизии.
         Возвращает словарь {имя автора: число строк}
     """
     return cmds.blame_stats(self.path, file_path, rev_sha1)