`go get`首先失败,然后工作

时间:2017-11-07 13:01:53

标签: git go

go命令go get github.com/cloudnativego/gogo-service/service先失败,但第二次失败。

整个事件序列:

   [23:47]$ go get github.com/cloudnativego/gogo-service/service
    # cd /Users/../github.com/cloudnativego/gogo-service; git submodule update --init --recursive
    No submodule mapping found in .gitmodules for path 'vendor/github.com/cloudfoundry-community/go-cfenv'
    package github.com/cloudnativego/gogo-service/service: exit status 1
   [23:48]$ go get github.com/cloudnativego/gogo-service/service
   [23:49]$ #worked
   [23:49]$ ll vendor/github.com/
    total 0
    drwxr-xr-x  3 _  staff  102 Nov  2 22:48 .
    drwxr-xr-x  3 _  staff  102 Nov  2 22:48 ..
    drwxr-xr-x  3 _  staff  102 Nov  2 22:48 codegangsta
   [23:49]$

这是git问题还是go get片状或预期的行为?

1 个答案:

答案 0 :(得分:2)

这是由有问题的存储库使用外部库(在供应商目录中)作为子模块引起的,而不是静态销售,但是没有在.gitmodules文件中配置这些子模块(实际上这些子模块实际上似乎完全不存在) )。 go get和子模块存在一个已知问题:

您可以在相关存储库中提交问题,并建议他们转移到静态销售模型(或使用govendor' fetch实用程序或类似工具,忽略/vendor/*/模式)。它们不是第一个遇到此问题的回购:

即使github本身似乎也建议不再使用子模块:

https://github.com/blog/2104-working-with-submodules

  

在将存储库添加为子模块之前,请先检查您是否有更好的替代方案。 Git子模块在简单的情况下运行良好,但是现在通常有更好的工具可用于管理依赖项,而不是Git子模块可以提供的。