Список измененных файлов в ветке
Если для какого-нибудь пайплайна надо определить список измененных файлов, то сама команда довольно простая:
git diff-tree --no-commit-id --name-only -r %base_commit_hash% -r %commit_hash%
В качестве %base_commit_hash% и %commit_hash% можно использовать как хэш коммита, так и название ветки (origin/master, например). В CI почти наверняка эти ревизии есть в переменных окружения. В GitLab это CI_MERGE_REQUEST_DIFF_BASE_SHA и CI_COMMIT_SHA.
Однако стоит внимательно следить за этими значениями, если их получаете самостоятельно. Оказывается, нельзя просто так взять и найти коммит, от которого началась ветка. Есть
git merge-base master HEAD
и эта команда будет неплохо работать в плюс-минус обычных сценариях. Но будет давать неверный результат, если master подмерживается в фиче-ветку.
Комментарии