I wanted to use gRPC in a system composed of multiple services (each in its own repository) and I was wondering about approach towards versioning in Git:
- *.proto files
- generated code (mostly Go/Java/Python)
So far I was thinking about approach like:
- *.proto files - either:
- each definition goes to separate repository
- each definition lands in repository of service that implements defined service
- generated code - one of:
- goes into the same repository as in 1. above
- goes into the same repository as in 2. above
- there is no generated code at all - it is generated by built system/script before actual built
I'm not too experienced in gRPC and I have hard time to tell whether one of those is much better/worse than others. I can see some pros and cons of those (like good IDE integration, no need for app that generates code, etc.) but I wonder about some "big" potential problems? Which approach is "best practice"?