使用本地 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 尚未发布,因此可能会有所改变。
我想知道如何与本地图书馆合作。假设我想并行开发两个 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 尚未发布,因此可能会有所改变。