如何在 go get 命令的最新标签之上使提交哈希可消耗?

问题描述 投票:0回答:1

我正在使用框架包 (github.com/username/fmk),并且遇到使用 go get 进行版本解析的问题。

当前发布流程:

  1. 功能分支:开发人员从开发中创建独立的分支来处理新功能。
  2. 合并到开发:一旦功能完成并经过测试,它们就会重新集成到开发分支中。
  3. 预发布分支:对于所有版本,都会根据最新开发创建专用的预发布分支,以便在合并到主分支之前进行最终测试。
  4. 主分支&标签:预发布分支合并到主分支。合并后主分支会标记对应的版本标签。

问题: 我正在尝试使用 go get 从功能分支安装特定提交。这是我使用的命令:

go get github.com/username/fmk@066bca62e82a

但是, go get 会尝试安装该软件包的 v1.30.1 版本。根据存储库中的标签,该版本似乎不存在。当我检查 v1.30.0 被标记时的提交时,我发现了从 main 到development的合并。我猜这与回退到 v1.30.0 的下一个版本有关。但我不确定。


预期行为: 我期望 go get 下载并安装与提交哈希(066bca62e82a)相对应的包。在最新版本标签之上,即 v1.44.2。


我尝试过的事情:

尝试强制使用带有时间戳的版本:

> go get -d github.com/username/[email protected]
go: github.com/username/[email protected]: invalid pseudo-version: revision 066bca62e82a is not a descendent of preceding tag (v1.44.1)

尝试删除(@none)软件包并再次安装:

> go get -d github.com/username/fmk@none
> go get -d github.com/username/fmk@066bca62e82a

#response:
    go: downloading github.com/username/fmk v1.30.1-0.20240423064250-066bca62e82a
    go: github.com/username/fmk@066bca62e82a: github.com/username/[email protected]: verifying module: github.com/username/[email protected]: reading https://sum.golang.org/lookup/github.com/username/[email protected]: 404 Not Found
            server response:
            not found: github.com/username/[email protected]: invalid version: git ls-remote -q origin in /tmp/gopath/pkg/mod/cache/vcs/6ad280b7d82bf06e4410b8adbf3bd0e2922d5dc1e17a71a955f977917d4be5da: exit status 128:
                    fatal: could not read Username for 'https://github.com': terminal prompts disabled
            Confirm the import path was entered correctly.
            If this is a private repository, see https://golang.org/doc/faq#git_https for additional information.

问题:

  • 使用提交哈希时,go get 如何确定要安装的版本?
  • 在这种情况下,为什么 go get 会建议不存在的版本 (v1.30.1)?
  • 在 fmk 包中安装特定提交哈希及其相应代码的最佳方法是什么?
go github tags go-modules
1个回答
0
投票

根据“管理依赖项:使用存储库标识符获取特定提交”

go get example.com/theirmodule@4cf76c2
应该可以工作。

我们来试试:

> go get go.uber.org/goleak@7f1444f                                 
go: added go.uber.org/goleak v1.3.1-0.20240605195212-7f1444f09263
> fgrep go.uber.org/goleak go.mod
    go.uber.org/goleak v1.3.1-0.20240605195212-7f1444f09263 // indirect

您在这里看到的

v1.3.1
伪版本的一部分,它是“基本版本前缀(vX.0.0或vX.Y.Z-0),它源自语义版本标签早于修订版 或 vX.0.0 ”

对我来说看起来不错,并且有详细的记录。您的情况是这样吗?

© www.soinside.com 2019 - 2024. All rights reserved.