I wonder what is the best practice for protocol buffer regarding source repository (e.g. git) :
Do I have to put ONLY the .proto file in the repository and let anyone else who uses the source code to regenerate classes code with protoc compiler ? or is it a best pratice to put both .proto files AND source code generated by protoc compiler ?
You should never check in generated code if you can avoid it.
If you check in generated code, you take on multiple risks, such as:
.proto
file but forget to update the generated code. Their changes won't actually "take effect" until someone else later on regenerates the generated code for some other reason -- and then all of the sudden they see side effects they weren't expecting.If for some reason you absolutely have to check in generated code, I highly recommend creating an automated test that checks if the checked-in code matches what
protoc
would generate if run fresh. (For example, the protobuf repository itself contains checked-in copies of generated code fordescriptor.proto
because this code is needed to compileprotoc
, creating a circular dependency. But there is a unit test that checks that the checked-in code matches whatprotoc
would generate.)