2016-12-14 6 views
2

Я хотел бы перечислить все файлы, измененные в запросе на растяжение, в то время как на travis.Список файлов, измененных в запросе на растяжение в Travis

Я пробовал $(git diff --name-only $TRAVIS_PULL_REQUEST_BRANCH $(git merge-base $TRAVIS_PULL_REQUEST_BRANCH master)), но git не знает о TRAVIS_PULL_REQUEST_BRANCH, так как он находится на разветвленном репо.

Я также попробовал с git rev-list и $ TRAVIS_COMMIT_RANGE, но он включает в себя также новые коммиты на главной ветке.

Любая идея, как получить файлы, которые модифицируются исключительно PR?

ответ

3

Вы почти находитесь.

В этом сценарии нет причин использовать переменную окружения $TRAVIS_PULL_REQUEST_BRANCH.

Исходное дерево в трейвисе будет вашим запросом на вытягивание, объединенным обратно в самую последнюю ветвь цели ($TRAVIS_BRANCH, вероятно master). То есть, HEAD - ваш запрос на вытягивание, объединенный в $ TRAVIS_BRANCH.

То, что вы хотите только изменения между вашим запросом тяговой и master, которые могут быть извлечены с

$(git diff --name-only HEAD $(git merge-base HEAD $TRAVIS_BRANCH)) 

или короче, с точка-точка-точка нотации

git diff --name-only HEAD...$TRAVIS_BRANCH 

Благодарности @ostrokach

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

git diff --name-only --diff-filter=AM HEAD...$TRAVIS_BRANCH 
+0

отлично, спасибо большое! –

+2

Для этого есть сокращение: 'git diff - name-only HEAD ... master' (с тремя точками). Для получения дополнительной информации см. [Здесь] (http://stackoverflow.com/a/7256391/2063031). – ostrokach

+0

'fatal: неоднозначный аргумент 'HEAD ... master': неизвестная ревизия или путь не в рабочем дереве. –