如何解决去不从BitBucket下载存储库下的模块
在bitbucket.org中有一个git仓库
reponame/
.git/
integration1/
integration2/
integration-common/
└── util
├── go.mod
└── readascii.go
模块目录是git存储库的子目录。该存储库带有v0.0.1
标记。
这是go.mod
module bitbucket.org/orgname/reponame/integration-common/util
go 1.14
对此模块执行go get
时,出现以下错误
go get bitbucket.org/orgname/reponame/integration-common/util@v0.0.1
go: downloading bitbucket.org/orgname/reponame v0.0.1
go get bitbucket.org/orgname/reponame/integration-common/util@v0.0.1: module bitbucket.org/orgname/reponame@v0.0.1 found,but does not contain package bitbucket.org/orgname/reponame/integration-common/util
如果使用Web浏览器,我可以在标签integration-common/util/
下的bitbucket.org中看到v0.0.1
目录。 go.mod具有上面显示的内容。
更奇怪的是,go get确实可以下载存储库中的其他目录(integration1/
和integration2/
)。由于某些原因,它认为v0.0.1
不包含integration-common/
目录,即使bitbucket在那里显示了该标签。
我使用ssh而不是https下载,因为https要求在我们的存储桶存储库中使用2fa:
〜/ .gitconfig:
url "git@bitbucket.org:"]insteadOf = https://bitbucket.org/
我知道使用go get时,bitbucket很奇怪。是我错过了什么吗,还是go get和bitbucket的错误?
解决方法
标签 v0.0.1
适用于存储库根目录 (bitbucket.org/orgname/reponame
) 的模块。
go.mod
子目录中的 integration-common/util
文件使该子目录成为其自己的模块,具有自己的版本空间和自己的版本标记集,其格式需要为 { {1}}(见https://golang.org/doc/modules/managing-source#tmp_4)。
即:
-
integration-common/util/v0.0.1
标记适用于模块v0.0.1
,它不包含包,因为它位于包含另一个bitbucket.org/orgname/reponame
文件的目录下。 - 模块
go.mod
存在并包含该包,但它没有版本bitbucket.org/orgname/reponame/integration-common/util
,因为子目录模块的版本标记需要与该子目录对应的显式前缀。
一般来说,最简单的方法是只有一个 v0.0.1
文件(位于 repo 根目录)并避免在子目录中嵌套其他模块。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。