为什么Travis git ref有时候不符合我的拉动请求?

Ste*_*lay 6 git git-log pull-request travis-ci

我有一个Travis-CI脚本,用于检查拉取请求的提交消息.GitHub为它提供了一系列提交,它用于git log --format=online "<lastref>..<firstref>"构建要检查的SHA列表.

这在大多数情况下都很有用,但偶尔会发生这种情况:

我的拉取请求(将分支2.2合并到2.x,多次提交)在Travis上生成此命令:

git log --format=oneline b5d12909dacd80d21c4e4f4ca6d5683d6e547f9e..b349be9418371c1f694dabeccbce0e946fde3a0a
Run Code Online (Sandbox Code Playgroud)

在本地,这可以按预期工作.我得到了PR的提交.但是,在Travis上,b5d129提交没有出现,因此它会将每次提交转储回项目的开头.

这里发生了什么?

更新:我做了另一个合并PR,这次是Travis的默认git clone深度为50,但也不包括2.x上的新提交.无论如何,这个新PR的构建工作正常.我还是难过.克隆深度不应该有任何影响,因为如果没有必要的提交,结账会失败.

Kyl*_*cey 0

克隆深度不应该产生任何影响,因为如果没有必要的提交,签出将会失败。

如果问题是克隆深度,您必须意识到最新的提交并不依赖于之前的所有提交。每次提交都是存储库的完整“快照”,并且可以独立工作。即使您以 1 的深度进行克隆,该提交也将具有签出/构建/部署等所需的所有信息,只要该提交是分支的 HEAD 指向的信息即可。您在 GitHub 中看到的小增量,或者git show只是您正在查看的提交与之前的提交(提交父级)之间的差异。

如果这些拉取请求有超过 50 次提交,那么我认为您所看到的行为在某种程度上是预期的。我不确定 Travis 是否允许您将克隆深度设置为高于 50(或完全禁用它),但我有一种感觉可以解决您的问题。