开发人员应该提交 Go 生成的代码吗?

Should a developer commit Go generated code?

我使用代码生成器插件根据 OpenAPI 规范生成服务器存根。

我想知道是否应该将生成的代码提交给版本控制。

这取决于代码生成的上下文。 理想情况下,您希望在测试和构建步骤之前向 CI 管道添加 go generate 步骤。 在您的 repo 自述文件中,您应该添加解释如何在开发时生成文件的说明。

但是,如果这一代只能 运行 在您的开发机器上,那么您可以将其添加到您的源代码管理中。

一般来说,是的。

原因很简单:如果我是您代码的下游用户——也就是说,我只想将您的库作为依赖项包含在内或构建您的应用程序——没有必要给我增加额外的负担用于构建代码;我应该只能 go build/go install 你的代码,然后收工。

相反,如果我打算实际开发您的代码——无论是为了将我的更改包含在上游还是为了保持这些更改未发布——完全可以要求我在需要的地方重新生成某些文件。