Próbuję uzyskać zmienione ścieżki plików między najnowszym zatwierdzeniem a tym przed nim w git python. Problem polega na tym, że nawet jeśli najnowsze zatwierdzenie 1 zmieniło plik, wyświetla o wiele więcej. Poniżej mój kod: -

repo = git.Repo(path)
commits_list = list(repo.iter_commits())
a_commit = commits_list[0]
b_commit = commits_list[-1]

itemDiff = a_commit.diff(b_commit)

for item in itemDiff
print(item.a_path)

Próbuję tego na lokalnym sklonowanym repozytorium. Co ja robię źle?

1
Arunava Paul 19 grudzień 2019, 16:12
ItemDiff = repo.head.commit.diff('HEAD~1') dla pozycji w itemDiff: print(item.a_path)... To działało idealnie. Nie rozumiem, dlaczego problem pojawia się przy pierwszym fragmencie.
 – 
Arunava Paul
19 grudzień 2019, 17:28
Uważaj na wcięcia i dwa punkty pętli for. dla pozycji w itemDiff: print(item.a_path)
 – 
rustyBucketBay
19 grudzień 2019, 17:34

1 odpowiedź

Jeśli chcesz czytać z repozytorium, rozważ użycie abstrakcji GitPythona Pydriller.

for commit in RepositoryMining("repo").traverse_commits():
    for modified_file in commit.modifications:
        modified_file.new_path # here you have the path of all the files changed in the commit
0
Davide Spadini 29 styczeń 2020, 12:02