当浅层测试为 true 时,git“预期浅层列表”错误

tho*_*oly 8 travis-ci

我有一个存储库,在 Travis 上进行测试时,始终给出如下错误:

$ if [[ -a .git/shallow ]]; then git fetch --unshallow; fi
fatal: git fetch-pack: expected shallow list
The command "if [[ -a .git/shallow ]]; then git fetch --unshallow; fi" failed and exited with 128 during .
Your build has been stopped.
Run Code Online (Sandbox Code Playgroud)

您可以在此处查看示例,尽管链接可能需要授权。

我觉得奇怪的是,似乎git fetch --unshallow只有在已经确定它很浅的情况下才应该运行。我应该补充一点,我已经在许多其他存储库中使用了这个构造,并且从未遇到过问题。

在我的本地机器上,内容.git是:

myrepo.git$ ls -a
.   branches        config       FETCH_HEAD  HEAD   index  logs     ORIG_HEAD                                                        
..  COMMIT_EDITMSG  description  gitk.cache  hooks  info   objects  refs
Run Code Online (Sandbox Code Playgroud)

The*_*des 7

我不太了解 Git 的内部结构,也不太明白git fetch --unshallow实际应该做什么,但有一种可能性:检查gitTravis 测试运行者可以使用哪个版本。

fatal: git fetch-pack: expected shallow list我在 CentOS 7 虚拟机上的 GitLab CI/CD shell 运行程序中看到相同的错误消息。CentOS 7 在官方存储库中仅包含 Git 1.8.something。

这篇博文是我最初意识到此错误消息与旧版本的 Git 相关的地方。该帖子建议升级操作系统默认版本git,但我不想这样做。

按照此处的建议,我最终所做的是设置:

variables:
  GIT_STRATEGY: clone
Run Code Online (Sandbox Code Playgroud)

在里面.gitlab-ci.yml。当然,这是 GitLab 特有的事情,但我非常肯定 Travis 为您提供了一些为测试环境设置环境变量的选项。


也可以看看:

  1. gitlab runner 不适用于特定项目(Ryan Daniels 的回答)