使用本地 go 依赖项最方便的方法?

Most convenient way to work with local go dependencies?

我想知道如何与本地图书馆合作。假设我想并行开发两个 vgo 项目,一个 my-project 和一个由 my-project 使用的 my-util 项目。当然 my-util 在远程存储库中可用,但是由于将我在这里的所有更改提交到 master 分支只是为了使它们在 my-project 中可用(和可测试)是不可行的,我想使用my-util 的本地版本。类似于 Java.

中的旧 mvn clean install

我认为这必须通过 replace 指令来实现。但这意味着我需要以一种我不想稍后提交的方式在 my-project 中操纵我的 go.mod。除了在提交之前删除我所有的 replace 指令并在之后重新添加它们之外,有什么办法可以解决这个问题吗?

是否有类似 go_local.mod 的东西,其中包含 replace 指令并且可以放在 .gitignore 上?或者我可以在其中定义替换的某种环境变量?或者至少是一个 IDE 允许在提交时忽略 go.mod 中的 replace 指令?

或者我采用了错误的方法,对于我的情况,replace 方法是否有更方便的替代方法?

看来 Go 终于想出了更好的解决方案。使用 1.18 可以创建一个工作区文件,其中可以应用 replace 指令:https://go.googlesource.com/proposal/+/master/design/45713-workspace.md

所以像这样的 go.work 应该可以工作:

go 1.18

use (
    ./my-project // location of the go.mod of my project
)

replace github.com/NotX/my-util => ./my-util // location of go.mod

因此,从 go.work 文件位置开始,命令 go test ./my-project/... 现在应该使用本地实用程序 repo。

1.18 尚未发布,因此可能会有所改变。