рекурсивное извлечение времени git для подпапок и файлов

Я пытаюсь создать словарь с элементами в формате имя файла: отметка времени в гг-мм-дд чч:мм:сс . Это должно рекурсивно включать все подпапки и файлы в репо. Я наткнулся на кусок кода:

import git
repo = git.Repo("./repo")
tree = repo.tree()
for blob in tree:
    commit = repo.iter_commits(paths=blob.path, max_count=1).next()
    print(blob.path, commit.committed_date)

Однако это включает только основные подпапки. Как рекурсивно включать вложенные папки и файлы

Примечание. Следующее решение Роланда здесь не включает подпапки, а только файлы. Также мне нужно указать путь, по которому загружается репозиторий git, а затем запустить скрипт, указав его абсолютный путь.

Получить время последней фиксации файлов репозитория Git через Python?


person user3399495    schedule 03.05.2018    source источник


Ответы (1)


Это работает для меня

http://gitpython.readthedocs.io/en/stable/tutorial.html#the-tree-object

Согласно документу. Поскольку деревья разрешают прямой доступ только к своим промежуточным дочерним записям, используйте метод traverse, чтобы получить итератор для рекурсивного извлечения записей.

Он создает объект генератора, который выполняет работу

print tree.traverse()
<generator object traverse at 0x0000000004129DC8>




  d=dict()
  for blob in tree.traverse():
        commit=repo.iter_commits(paths=blob.path).next()
           d[blob.path]=commit.committed_date
person user3399495    schedule 03.05.2018