9

I use a code generator plugin to generate the server stub from the OpenAPI specifications.

I want to know if I should commit the generated code to version control.

Jonathan Hall
  • 75,165
  • 16
  • 143
  • 189
David
  • 147
  • 5
  • Can you specify which generator you are using? A code example would also be nice. – sHartmann Jun 02 '19 at 13:46
  • If the specification ever changes, would you manually modify this file or re-generate it? – Hugh Bothwell Jun 02 '19 at 14:15
  • 3
    If you want `go get` to work on your package and the generated files are required to build the Go code, then commit the generated Go files to your source code control system. – Charlie Tumahai Jun 02 '19 at 14:59
  • For generated code from `protoc` etc. which is OS neutral, it's common practice to get checkin this code. A makefile is nice to easily allow someone to refresh the code, if they need to add/modify any message types. – colm.anseo Jun 02 '19 at 18:16

2 Answers2

11

In general, yes.

The reasoning is simple: if I'm a downstream user of your code—that is, I want to merely include your library as a dependency or build your application,—there is no point in creating additional burden on me for building your code; I should be able to merely go build/go install your code and call it a day.

If, instead, I intend to actually develop your code—either with the intent to have my changes included upstream or for maintaining these changes unpublished—it's perfectly OK to require me to regenerate certain files where it is required.

kostix
  • 51,517
  • 14
  • 93
  • 176
0

That would depend on the context of the code generation. ideally you'd want to add a go generate step to your CI pipeline before the test and build steps. In your repo readme file you should add instructions explaining how to generate the files while developing.

However, if the generation is something that can only be run on your development machine than you can add this to your source control.

Variant
  • 17,279
  • 4
  • 40
  • 65