В git post-commit hook как мне получить список файлов, которые были изменены? - PullRequest
8 голосов
/ 17 ноября 2010

Попытка выяснить, сколько времени было потрачено на коммит в Git post-commit hook.

У меня есть git-ловушка после коммита, которая передает информацию о коммите через API. Я хочу выяснить, сколько времени было потрачено на коммит. Грубо.

Мое предположение заключается в том, что приблизительное значение можно определить, найдя минимум всех времени создания и времени изменения соответствующих файлов и сравнив его с максимальным временем создания и изменения.

Я легко могу сделать это в скрипте Python. Если кто-то скажет мне, что это были файлы "foo.txt", "bar.txt" и "path / bla.txt", я могу быстро сделать некоторую арифметику в сценарии на основе этих файлов.

Итак, в git post-commit hook, как мне получить список файлов, которые были изменены?

Ответы [ 2 ]

10 голосов
/ 17 ноября 2010

При написании сценариев вокруг git, вы должны стараться придерживаться сантехнических команд - их формат менее подвержен изменению и легче анализируется Вот команда, которая выводит имена путей, которые изменились в коммите:

git diff-tree -r --name-only --no-commit-id <tree-ish>

Кроме того, вы можете изучить индекс, так как он содержит временные метки о том, когда файлы были подготовлены, что может дать вам дополнительное преимущество; однако я не верю, что есть способ получить доступ к этой информации.

0 голосов
/ 17 ноября 2010

Провел некоторое исследование и обнаружил, что git log --name-only -n1 - лучший подход.Это не сложно получить мин.и макс.отметки времени в файлах путем небольшого сравнения строк и использования модуля Python os.stat.

Как общее решение, оно все еще не велико, потому что время модификации файлов на самом деле не отражает реальность затраченного времени.

...