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

Den*_*aud 5 git github pull-request travis-ci

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

Mat*_*uhn 9

你快到了.

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

travis中的源树将是您的pull请求合并回最近的目标分支($TRAVIS_BRANCH可能master).也就是说,HEAD您的拉取请求是否合并到$ TRAVIS_BRANCH中.

你想要的只是拉取请求和$TRAVIS_BRANCH可以检索的拉取请求之间的变化

$(git diff --name-only HEAD $(git merge-base HEAD $TRAVIS_BRANCH))
Run Code Online (Sandbox Code Playgroud)

点阵点符号或更短

git diff --name-only HEAD...$TRAVIS_BRANCH
Run Code Online (Sandbox Code Playgroud)

谢谢@ostrokach

如果要检查内容,只考虑修改和添加的文件也很有趣

git diff --name-only --diff-filter=AM HEAD...$TRAVIS_BRANCH
Run Code Online (Sandbox Code Playgroud)

  • 有一个简写:`git diff --name-only HEAD ... master`(有三个点).有关更多信息,请参阅[此处](http://stackoverflow.com/a/7256391/2063031). (3认同)
  • 致命:模棱两可的参数“ HEAD ... master”:未知的修订或路径不在工作树中。 (2认同)
  • 您可能希望用$ TRAVIS_BRANCH替换master,这样当PR针对另一个分支而不是master时,它也可以工作. (2认同)
  • 鉴于 HEAD 有更新的提交,它不应该是 `$TRAVIS_BRANCH...HEAD` 吗? (2认同)