将项目部件保存在一个存储库中或拆分为多个

时间:2014-09-17 10:16:57

标签: git version-control dvcs

TL; DR 中型项目的所有部分应该在一个存储库中,还是每个部分都有自己的存储库?

我在C ++中开始新项目(但我认为这是语言无关的),它将由几个部分组成。服务器,客户端 - linux(客户端也可以工作p2p),客户端 - 安卓,...

我可能只为客户端支持linux,windows和android,仅支持服务器linux。

我认为这是一个中等规模的项目。一次发布多个版本对我来说并不重要,当前(并且只维护)版本将是trunk。我会使用feature& bug分支。

现在终于到了我的问题。我应该只为这一切使用一个回购吗?我可以想象它会简化一些事情。而且我没有启动内核2.0,我不希望这么多文件(我希望)。

开发环境将是vim& bash& cmake若相关

谢谢:)

2 个答案:

答案 0 :(得分:2)

我建议每个部分都应该有自己的回购。

原因是客户端和服务器的发布周期非常不同。在通信协议不稳定的最开始时,两者的速度或多或少地相同,并且对它们的改变是高度相关的。

然而,当协议稳定时,事情会发生变化。客户端和服务器的开发变得非常独立,他们将有自己的目标。例如,您计划改进客户端的UI,但在服务器上执行小代码更改以提高性能。因此,您可能在服务器上有许多快速提交和频繁发布,但它不会影响客户端的开发。每个部分都有一个独立的git图,为您提供清晰的视图。

对于不同平台的客户,这是非常主观的。如果不同客户端的UI,功能和性能的一致性是主要目标,那么我建议为所有客户端平台使用一个repo。否则,每个平台都可以拥有它自己的回购。

事实上你也知道,没有对错。在我看来,关键因素是各部分之间的相关性以及它们是否具有相似/同步的发布周期。

答案 1 :(得分:1)

对于使用多部分或单部分模式的任何大小的项目更多的问题

  • 可维护性
  • 责任,权利和权力的分离和分配

比项目的大小

在您的(相当复杂的)结构中,多存储库(基于子树)的结构似乎是合乎逻辑且合理的决策