2016-12-14 59 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中的源代码树将被合并回最近的目标分支($TRAVIS_BRANCH,可能为master)。也就是说,HEAD是合并到$ TRAVIS_BRANCH中的拉取请求。

你想要的仅仅是可与

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

或点 - 点 - 点符号短

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

感谢检索您的拉请求,并master之间变化@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

'致命的:模棱两可的论点'HEAD ... master':未知的版本或路径不在工作树中。' –