如何在go.mod中忽略replace指令

lbsnaicq  于 2022-12-16  发布在  Go
关注(0)|答案(4)|浏览(338)

我在进行本地开发时使用了“replace”语句,所以我的go.mod如下所示:

require (
 gorm.io/gorm v1.21.11
 github.com/mypackages/session v1.1.0
)

replace (
 github.com/mypackages/session => ./../session
)

但是当我git commit我的更改并将代码部署到生产环境中时,我不需要“replace”,所以我需要在每个git commit上注解这行replace代码,然后取消注解它。有没有办法在生产环境中忽略“replace”语句?

34gzjxbg

34gzjxbg1#

虽然@Adrian说的对,在Go语言中没有办法做到这一点,但我认为这个问题与Go语言无关,而与Git有关。您可以使用内容过滤器忽略文件的特定部分,更多信息请参见this SO answer

ubof19bj

ubof19bj2#

replaceenvironment 中不能被忽略,因为它是在依赖关系解析时使用的,依赖关系解析在构建之前,构建之前很久就在生产中执行了。但是要回答根本问题,不,你不能“忽略”该指令。如果它在那里,它就在那里。

olhwl3o2

olhwl3o23#

有一个mod文件的本地版本(例如go.local.mod),然后你可以告诉go命令使用它:

go build -modfile=go.local.mod main.go
yebdmbv4

yebdmbv44#

你可以编写一个提交前钩子,它会检测你的go.mod文件是否包含replace。
预提交挂钩代码-〉https://gist.github.com/MohitVachhani/e331321bb6f8c3e5e26b0cb4ab792c55
请通过这一点,让我知道,如果你有任何改进!

相关问题