在Travis中列出拉动请求中修改的文件

时间:2016-12-14 14:27:39

标签: git github travis-ci pull-request

我想在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专门修改的文件吗?

2 个答案:

答案 0 :(得分:5)

你快到了。

在此方案中没有理由使用环境变量$TRAVIS_PULL_REQUEST_BRANCH

travis中的源树将是您的pull请求合并回最新的目标分支($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

答案 1 :(得分:0)

您应按以下命令使用$TRAVIS_BRANCH

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

(由@Matthias Kuhn建议)。但是首先,执行以下

$ git remote set-branches --add origin $TRAVIS_BRNACH
$ git fetch
$ git diff origin/$TRAVIS_BRANCH # now works as normal

这是修复以下错误所必需的:

fatal: ambiguous argument 'HEAD...master': unknown revision or path not in the working tree.

(如https://github.com/travis-ci/travis-ci/issues/6069中所述)。


也可以使用$TRAVIS_COMMIT_RANGE,但在这种情况下 拉取请求的目标分支中有更改,这些更改也将包括在内。如果您的情况不太可能出现这种情况(例如,一次只能创建到该分支的单个拉取请求),那么此解决方案会更容易。

命令是:

git diff --name-only $TRAVIS_COMMIT_RANGE