如何使用本地 git checkout 进行更改跟踪的 go 依赖项
How to use local git checkout for a go dependency for change tracking
我遇到了以下挑战:
在开发代码的同时,我还想并行开发一个依赖项 (micromdm/scep) 并使用 git 跟踪更改。
我的代码像这样导入库:
import(
...
sscepclient "github.com/micromdm/scep/v2/client"
"github.com/micromdm/scep/v2/cryptoutil/x509util"
"github.com/micromdm/scep/v2/scep"
)
为了指向模块的本地签出版本,我在 go.mod:
中替换了模块
require (
...
github.com/micromdm/scep/v2 v2.0.0
)
replace github.com/micromdm/scep/v2 => /home/pi/go/scep
我确实在 scep 模块的存储库上做了一个 git 克隆,并且可以在替换指令指定的目录中找到文件。
但是当我尝试 运行 我的代码时,出现错误
../../scep/server/csrsigner.go:8:2: no required module provides package github.com/micromdm/scep/v2/scep; to add it:
go get github.com/micromdm/scep/v2/scep
如果我按照要求获取依赖项,我会收到错误消息
go get: module github.com/micromdm/scep/v2@upgrade found (v2.0.0, replaced by /home/pi/go/scep), but does not contain package github.com/micromdm/scep/v2/scep
我还尝试在依赖模块的 go.mod 本身中添加 replace 语句,因为该模块也有几个直接指向 scep 模块的 require 语句,但没有成功。
据我了解,GO 无法找到模块(显然),但老实说,依赖项的处理确实让我感到困惑。根据我在 Internet 上找到的内容,我了解到应该可以通过使用 replace 指令来开发本地签出的存储库。如果有人能阐明这一点,我会很高兴。谢谢!
检查是否定义了模块版本(v2)
module github.com/micromdm/scep/v2
@/home/pi/go/scep/go.mod
将模块的路径更改为相对路径,在这种情况下,它有效。
更新 1:我看到你做到了,但这是我脑海中唯一的选择。
更新 2:找到了一个小解决方案。
我遇到了以下挑战:
在开发代码的同时,我还想并行开发一个依赖项 (micromdm/scep) 并使用 git 跟踪更改。
我的代码像这样导入库:
import(
...
sscepclient "github.com/micromdm/scep/v2/client"
"github.com/micromdm/scep/v2/cryptoutil/x509util"
"github.com/micromdm/scep/v2/scep"
)
为了指向模块的本地签出版本,我在 go.mod:
中替换了模块require (
...
github.com/micromdm/scep/v2 v2.0.0
)
replace github.com/micromdm/scep/v2 => /home/pi/go/scep
我确实在 scep 模块的存储库上做了一个 git 克隆,并且可以在替换指令指定的目录中找到文件。
但是当我尝试 运行 我的代码时,出现错误
../../scep/server/csrsigner.go:8:2: no required module provides package github.com/micromdm/scep/v2/scep; to add it:
go get github.com/micromdm/scep/v2/scep
如果我按照要求获取依赖项,我会收到错误消息
go get: module github.com/micromdm/scep/v2@upgrade found (v2.0.0, replaced by /home/pi/go/scep), but does not contain package github.com/micromdm/scep/v2/scep
我还尝试在依赖模块的 go.mod 本身中添加 replace 语句,因为该模块也有几个直接指向 scep 模块的 require 语句,但没有成功。
据我了解,GO 无法找到模块(显然),但老实说,依赖项的处理确实让我感到困惑。根据我在 Internet 上找到的内容,我了解到应该可以通过使用 replace 指令来开发本地签出的存储库。如果有人能阐明这一点,我会很高兴。谢谢!
检查是否定义了模块版本(v2)
module github.com/micromdm/scep/v2
@/home/pi/go/scep/go.mod
将模块的路径更改为相对路径,在这种情况下,它有效。
更新 1:我看到你做到了,但这是我脑海中唯一的选择。
更新 2:找到了一个小解决方案。