【问题标题】:Should a developer commit Go generated code?开发人员应该提交 Go 生成的代码吗?
【发布时间】:2019-10-18 07:26:36
【问题描述】:

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

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

【问题讨论】:

  • 您能指定您使用的是哪个生成器吗?一个代码示例也很好。
  • 如果规范发生变化,您会手动修改此文件还是重新生成?
  • 如果您希望go get 处理您的包并且生成的文件是构建 Go 代码所必需的,那么将生成的 Go 文件提交到您的源代码控制系统。
  • 对于从protoc 等生成的与操作系统无关的代码,通常的做法是签入此代码。如果需要添加/修改任何消息类型,makefile 可以很容易地允许某人刷新代码。

标签: go code-generation


【解决方案1】:

一般来说,是的。

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 那么你的包将不兼容go get
    • @boreq 这确实是您应该提交的上下文
    猜你喜欢
    • 2019-08-06
    • 2015-07-10
    • 1970-01-01
    • 2020-07-21
    • 2016-05-11
    • 1970-01-01
    • 2019-09-30
    • 2010-11-08
    • 1970-01-01
    相关资源
    最近更新 更多