从 Azure DevOps 存储库导入时,由于缺少 .git,go get private 存储库失败

Aug*_*ust 6 git go go-modules

我正在尝试将私有存储库安装为 golang 模块。

阅读微软博客文章后。我已经尝试在本地进行此操作。

我已经更新了本地 .gitconfig

[url "git@ssh.dev.azure.com:v3/<my org>/"]
  insteadOf = https://dev.azure.com/<my org>/
Run Code Online (Sandbox Code Playgroud)

还导出到我的环境:

export GOPRIVATE=dev.azure.com/<my org>/
Run Code Online (Sandbox Code Playgroud)

存储库包含一个go.mod具有以下标头的文件:

module dev.azure.com/<my-org>/<project>/<repo>

go 1.18
Run Code Online (Sandbox Code Playgroud)

当我尝试通过以下方式安装模块时:

go get -v dev.azure.com/<my-org>/<project>/<repo>.git@develop
Run Code Online (Sandbox Code Playgroud)

它失败了:

go: dev.azure.com/<my-org>/<project>/<repo>.git@v0.0.0-20220827174211-d4e6ad2f92b0: parsing go.mod:
        module declares its path as: dev.azure.com/<my-org>/<project>/<repo>
                but was required as: dev.azure.com/<my-org>/<project>/<repo>.git
Run Code Online (Sandbox Code Playgroud)

.git但是,如果我最后删除它,则会失败:

203 非权威信息

导入私有模块的正确方法是什么

Von*_*onC 1

删除 .git 是第一步。

golang/go问题 41030中提到了 203 错误,该问题重定向到问题 28236

这包括:

如果您在这里是由于身份验证问题而与 Azure DevOps 存储库同步go get,例如在构建计算机上,那么您可以在gitconfig文件中设置一个简单的 git 凭据帮助程序:例如:

[credential "https://dev.azure.com"]
   helper = "/bin/sh /etc/azure-devops-helper.sh"
Run Code Online (Sandbox Code Playgroud)

azure-devops-helper.sh类似的东西

[credential "https://dev.azure.com"]
   helper = "/bin/sh /etc/azure-devops-helper.sh"
Run Code Online (Sandbox Code Playgroud)

其中环境变量包含所采用的用户名和 PAT。
事实证明,这对我们来说比切换到 Azure 存储库的 SSH 更可靠。

并且,对于任何401 Gone错误:

需要明确告诉GOPRIVATE不要检查 的校验和dev.azure.com

看来真的只是这样了。