Git: получайте изменения, выпущенные мастеру с течением времени - PullRequest
0 голосов
/ 10 ноября 2018

как личный проект, я хотел бы проверить различные библиотеки и проекты Python (будь то проприетарные или открытые) и проанализировать, как код менялся с течением времени в разных выпусках, чтобы собрать некоторую информацию о технических долгах (в основном через статический анализ кода). Я делаю это, используя библиотеку gitpython. Однако я пытаюсь отфильтровать коммиты слияния в master.

Я фильтрую коммиты слияния, используя git.log("--merges", "--first-parent", "master"), откуда извлекаю хеши коммитов и фильтрую эти конкретные коммиты из всех коммитов репозитория.

В качестве второй части я хотел бы получить все измененные файлы в каждом коммите слияния. Я могу получить доступ к большим двоичным объектам через git tree, но я не знаю, как получить только измененные файлы.

Есть ли какой-нибудь эффективный способ сделать это? Спасибо!

1 Ответ

0 голосов
/ 10 ноября 2018

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

Как только у вас будет список коммитов, как вы описали выше, зациклите его и выполните следующее:

git diff

Используйте git diff с флагом --name-only

enter image description here


git diff

--name-only
Показывать только имена измененных файлов.

--name-status
Показывать только имена и статус измененных файлов. См. Описание параметра --diff-filter о значении букв состояния.

...