извлечение git time recursivley для подпапок и файлов - PullRequest
0 голосов
/ 03 мая 2018

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

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 repo, а затем запустить скрипт, указав его абсолютный путь

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

1 Ответ

0 голосов
/ 03 мая 2018

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

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
...