J'utilise GitPython. Ci-dessous j'imprimer le nombre total de lignes modifiées dans un engagement spécifique: f092795fe94ba727f7368b63d8eb1ecd39749fc4
:GitPython "blame" ne me donne pas toutes les lignes modifiées
from git import Repo
repo = Repo("C:/Users/shiro/Desktop/lucene-solr/")
sum_lines = 0
for blame_commit, lines_list in repo.blame('HEAD', 'lucene/core/src/java/org/apache/lucene/analysis/Analyzer.java'):
if blame_commit.hexsha == 'f092795fe94ba727f7368b63d8eb1ecd39749fc4':
sum_lines += len(lines_list)
print sum_lines
La sortie est 38. Cependant, si vous allez simplement https://github.com/apache/lucene-solr/commit/f092795fe94ba727f7368b63d8eb1ecd39749fc4 et regardez le vous engager pour le fichier /lucene/analysis/Analyzer.java
, le nombre réel de les lignes changées ne sont pas 38 mais c'est 47. Certaines lignes sont complètement manquantes.
Pourquoi je reçois une valeur erronée?
Mais alors, comment puis-je obtenir tous ces commits en premier lieu? – dimitris93
Je veux obtenir toutes les informations {commit, lignes-changées} pour un fichier spécifique – dimitris93
_Un chemin serait d'itérer sur tous les commits dans la "liste-révolutions" d'un fichier spécifique. Dans les commandes git, ce serait git rev-list master - un peu de fichier ici. GitPython implémente ceci avec 'iter_commits': ' pour valider dans repo.iter_commits (paths = '/ path/to/Analyzer.java'): ... ' –