[英]How to ignore replace directive in go.mod
我在进行本地开发时使用“替换”语句。 所以我的 go.mod 看起来像这样:
require (
gorm.io/gorm v1.21.11
github.com/mypackages/session v1.1.0
)
replace (
github.com/mypackages/session => ./../session
)
但是当我git commit
我的更改并将代码部署到生产环境时,我不需要“替换”,所以我需要在每个git commit
上注释这行替换代码,然后取消注释。 有没有办法忽略生产环境中的“替换”语句?
replace
在环境中不能被忽略,因为它在依赖解析时间使用,在构建之前,这是在生产中执行之前很久。 但是要回答根本问题,不,您不能“忽略”该指令。 如果它在那里,它就在那里。
虽然@Adrian 是正确的,因为在 Go 中无法实现这一点,但我认为这个问题与 Go 相关,而与 Git 相关。 您可以使用内容过滤器忽略文件的特定部分。 有关更多信息,请参阅此 SO 答案。
拥有一个本地版本的 mod 文件(例如 go.local.mod),然后你可以告诉 go 命令使用它:
go build -modfile=go.local.mod main.go
您可以编写一个预提交挂钩,它将检测您的 go.mod 文件是否包含替换。
预提交挂钩代码 -> https://gist.github.com/MohitVachhani/e331321bb6f8c3e5e26b0cb4ab792c55
请通过此拨打 go,如果您有任何改进,请告诉我!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.