如何使用本地 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 指令来开发本地签出的存储库。如果有人能阐明这一点,我会很高兴。谢谢!

  1. 检查是否定义了模块版本(v2)

    module github.com/micromdm/scep/v2@/home/pi/go/scep/go.mod

  2. 将模块的路径更改为相对路径,在这种情况下,它有效

更新 1:我看到你做到了,但这是我脑海中唯一的选择。

更新 2:找到了一个小解决方案。