Чтение фиксирует в обратном порядке, используя GitPython - PullRequest
0 голосов
/ 05 декабря 2018

Существует ли способ итерации коммитов в обратном порядке с использованием библиотеки GitPython, то есть от самой старой до самой новой, аналогично:

>>> from git import Repo
>>> repo = Repo('/path/to/repo')
>>> for commit in reversed(repo.iter_commits()):
...     print commit
... 
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: argument to reversed() must be a sequence

Без необходимости включать все в памятьво-первых, как мой случай имеет дело с большим количеством коммитов (например, с ядром Linux)?

Ответы [ 2 ]

0 голосов
/ 05 декабря 2018

Основная проблема здесь в том, что в обратном порядке вам нужно пройти последовательность.но iter_commits вернуть итератор.так что вы можете сделать commitList = list(repo.iter_commits())

и затем использовать обратную логику на commitList

0 голосов
/ 05 декабря 2018

Глядя на документацию , выясняется, что iter_commits передает свои kwargs на git-rev-list.Глядя на документацию , вы обнаруживаете, что он принимает флаг --reverse, поэтому можно только догадываться, что repo.iter_commits(reverse=True) будет работать.

...