Какой наиболее эффективный способ получить время последнего изменения каждого файла в версии git? ⇐ Python

Программы на Python
Anonymous
Какой наиболее эффективный способ получить время последнего изменения каждого файла в версии git?

Сообщение Anonymous »

Я хочу программно указать имя и время последнего изменения каждого файла в определенной версии.
Запуск git log для каждого файла, как предложено здесь, выполняется очень медленно.
Есть ли более быстрый способ сделать это?
Запуск приведенного ниже сценария в нетривиальном репозитории (SDL) на моей машине занимает 59 секунд.
#!/usr/bin/env python

import datetime
import subprocess
import time

commit = "HEAD"

start = time.time()

file_names = subprocess.check_output(["git", "ls-tree", "--name-only", "-r", commit], text=True).strip().split("\n")

print(f"[{time.time() - start:.4f}] git ls-tree finished")

file_times = list(datetime.datetime.fromisoformat(subprocess.check_output(["git", "log", "-1", "--pretty=format:%cI", commit, "--", name], text=True).strip()) for name in file_names)

print(f"[{time.time() - start:.4f}] git info finished")


Подробнее здесь: https://stackoverflow.com/questions/781 ... -every-fil

Вернуться в «Python»