如何使用本地 git 签出作为更改跟踪的 go 依赖项

我陷入了以下挑战:


在开发代码时,我还想并行开发一个依赖项(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克隆,并且可以在用replace指令指定的目录中找到文件。


但是当我尝试运行我的代码时,我收到一个错误


../../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无法找到模块(显然),但说实话,依赖关系的处理确实让我感到困惑。根据我在互联网上的发现,我了解到通过使用 replace 指令,本地签出存储库的这种开发应该是可能的。如果有人能对此有所了解,我会很高兴。谢谢!


Smart猫小萌
浏览 121回答 1
1回答

智慧大石

检查是否已定义模块版本 (v2)module github.com/micromdm/scep/v2 @ /home/pi/go/scep/go.mod将模块的路径更改为相对路径,在这种情况下,它的工作原理。更新1:我看到你做了,但这是我脑海中唯一的选择。更新2:找到了一个小的解决方案。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go