我有一个go模块,它被镜像到几个位置。一个在gitlab,另一个在bitbucket。当试图将其建立在新的gitlab位置上时,我得到:
go: gitlab.com/company/core@v1.0.21:解析go.mod:模块声明其路径为: bitbucket.org/company/core,但必须为: gitlab.com/company/core
我知道为什么会发生这种情况,但我如何将我的go.mod定义为要么或者是?
发布于 2022-12-02 00:44:28
简短的回答:,你不能。
但一切都不会失去..。
如果在模块路径引用的位置和出于某种原因喜欢从其中下载的其他位置都有代码,则可以配置git alias将引用从指定的模块路径重定向到所需的下载源:
git config --global --add url."https://<download path>".insteadOf "https://<module path>"别名不一定是完全替换的。您可以使用别名替换任何模块路径上的前缀。因此,如果您已经在服务器Y上(在模块路径中)识别了许多托管在服务器X上的模块,则只需将服务器主机前缀和路径化名就可以覆盖所有这些模块(只要回购名称相同)。
例如,我们使用它为驻留在on服务器git repos中的模块创建“友好”模块路径,例如:
git config --global --add url."https://tfs.myorg.com/myorgcollection/_git".insteadOf "https://tfs.myorg.com"然后,我们的模块就能够将自己标识为tfs.myorg.com/somemodule.git,但是当go get试图获取这个git时,它将在https://tfs.myorg.com/myorgcollection/_git/somemodule.git查找它。
( .git后缀是必要的Azure DevOps特性)
老实说,我还没有在完全不同的服务器上尝试过这种方法,只是为了“重写”同一台服务器上的路径,但原则上它应该能工作。所以在你的情况下:
git config --global --add url."https://gitlab.com/company/".insteadOf "https://bitbucket.org/company/"因为这在git级别起作用,所以就go而言,它仍然是从bitbucket.org那里得到的,尽管git将被隐藏到gitlab.com中。
例如,当您go get时,您需要引用声明的模块路径:
go get bitbucket.org/company/core唯一的缺点是,您需要在任何/所有工作站(和构建机器)上配置别名,这些工作站需要从模块路径中声明的位置以外的任何位置进行go get。
https://stackoverflow.com/questions/74649513
复制相似问题