问题 如何在多个存储库之间共享Protocol Buffer .proto文件


我们正在考虑使用 协议缓冲区 用于在python和node.js服务之间进行通信,每个服务都存在于他们自己的存储库中。

自从 .proto 两个repos都必须可以访问文件,我们应该如何共享 .proto 文件?

我们目前正在考虑:

  1. 为我们所有人创建一个回购 .proto 文件,并使其成为我们所有服务的git子树
  2. 为我们所有人创建一个回购 .proto 文件,在推送时发布私有python模块和私有节点模块,并要求来自相应服务的模块
  3. 为我们所有人创建一个回购 .proto 文件,并将存储库指定为a的目标 pip / npm 包

分享的标准方式是什么? .proto 存储库之间的文件?


7220
2017-08-09 23:41


起源



答案:


这取决于您的开发过程。

对于大多数用途,git子树/子模块似乎是一种明智的解决方案。如果你有更多的下游项目,那么发布一个现成的模块是有意义的,因为每个项目都不需要protobuf生成器。


8
2017-08-10 06:48



这就是我们目前所倾向的。仍然希望有更好的记录最佳实践。似乎是一个相当常见的用例 - Swaraj
您是否将每个proto文件保存在自己的存储库中,然后包含所需的proto存储库,或者将它们全部保存在一个存储库中并包含所有proto文件,即使您在给定服务中不需要它们也是如此? - Vizualni


答案:


这取决于您的开发过程。

对于大多数用途,git子树/子模块似乎是一种明智的解决方案。如果你有更多的下游项目,那么发布一个现成的模块是有意义的,因为每个项目都不需要protobuf生成器。


8
2017-08-10 06:48



这就是我们目前所倾向的。仍然希望有更好的记录最佳实践。似乎是一个相当常见的用例 - Swaraj
您是否将每个proto文件保存在自己的存储库中,然后包含所需的proto存储库,或者将它们全部保存在一个存储库中并包含所有proto文件,即使您在给定服务中不需要它们也是如此? - Vizualni


在相同的情况下,我们使用了3个repos:服务器端用c ++编写,客户端用actionscript 3编写,protobufs用在第三个,并且使用了它们。对于一个大团队和大项目,我认为这是一个不错的选择。


1
2017-08-10 19:30



你是怎么实际“使用”持有protobufs的回购? - Swaraj
就像任何其他repo一样 - 进行更改并提交它们。然后,例如,在客户端,项目使用ant脚本编译,首先将.proto文件转换为actionscript类,然后编译整个项目。 - Dmitry Malugin