gpt4 book ai didi

version-control - 在 VCS 中保留 gRPC 定义和生成文件的策略

转载 作者:行者123 更新时间:2023-12-05 04:12:45 24 4
gpt4 key购买 nike

我想在由多个服务(每个服务都在自己的存储库中)组成的系统中使用 gRPC,我想知道在 Git 中进行版本控制的方法:

  • *.proto文件
  • 生成的代码(主要是 Go/Java/Python)

到目前为止,我一直在考虑以下方法:

  • *.proto 文件 - 或者:
    1. 每个定义都进入单独的存储库
    2. 每个定义都位于实现定义服务的服务存储库中
  • 生成的代码 - 其中之一:
    1. 进入与上面 1. 相同的存储库
    2. 进入与上面 2. 相同的存储库
    3. 根本没有生成代码——它是在实际构建之前由构建的系统/脚本生成的

我在 gRPC 方面经验不足,我很难判断其中一个是否比其他的更好/更差。我可以看到它们的一些优点和缺点(比如良好的 IDE 集成、不需要生成代码的应用程序等),但我想知道一些“大”潜在问题?哪种方法是“最佳实践”?

最佳答案

一般的最佳做法是将生成的文件保存在存储库之外,并始终在构建时自动生成它们。例如,当您编译 Java 程序时,您不会将任何生成的 .jar 文件添加到源代码管理;那是多余的,并且会让人头疼。 protobuf 文件也是如此。

人们可以想象将生成的文件保存在源代码控制中有用的场景(例如,作为单元测试的黄金文件),但这些都是根据具体情况而不是一般情况而定的经验法则,并且可能需要更复杂的机制来确保生成的任何内容都是最新的。

请注意,这与分发.proto 文件生成的源代码略有不同。并非您的代码的每个用户都希望或能够从源代码重建系统。通过类似的类比,您不必将 Java 项目作为原始代码分发,而是作为 .jar 文件分发。

关于version-control - 在 VCS 中保留 gRPC 定义和生成文件的策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39713810/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com