Список измененных файлов в ветке
Если для какого-нибудь пайплайна надо определить список измененных файлов, то сама команда довольно простая:
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
подмерживается в фиче-ветку.
Комментарии