Git单独或分开用于不同的项目?

时间:2015-01-29 06:39:48

标签: git github project-management

我想知道哪个是我项目的GIT管理的更好选择?

我有一个需要在软件,固件和移动应用程序上进行开发的主项目,项目结构如下所示:

+ MainApplication
     + Software (Visual Studio project)
     + Mobile (Android project)
     + Firmware (ARM project)
     + Document

那么,我是否将每个项目(软件,移动设备,固件)分成一个GIT仓库?或者我只是将所有项目都包含在一个大的GIT中?

我有下列优点和缺点:

  • 单一GIT

    • GOOD :我可以一次跟踪所有项目,而且不会支离破碎,更容易管理
    • GOOD :人们开始使用此GIT会更容易,因为所有内容都显示在一个GIT中
    • GOOD :我可以将文档放入此主要GIT
    • BAD :我无法标记或发布每个项目,除非我为它们添加前缀,并且很难跟踪这些大型项目的提交
  • 多个GIT

    • BAD :太多GIT回购,太碎片了,你需要为每个项目提供3个git链接而不是一个,麻烦
    • BAD :我也想跟踪我的文档文件夹,它会是"搞笑"为此文档文件夹创建单个GIT jsut
    • GOOD :可以轻松跟踪每个项目的问题并提交

更新1

下面有很多好的反馈,我喜欢一些方法提及,

  • 分开GIT并将它们组合在一起

    1. GOOD :我喜欢这个主意,因为我可以独立跟踪每个内容,如上所述
    2. GOOD :我可以对所有git进行分组,我可以轻松浏览它们,而不是需要浏览的巨大的git仓库
    3. BAD :听起来很奇怪,您可能需要创建另一个git才能跟踪文档文件夹
    4. 解:
      • Github 中,你可以使用组织(一种黑客来对所有gits进行分组,因为现在git不再属于你的个人gits
      • GitLab 中,您可以使用标签对其进行分组,以便日后轻松对其进行排序
  • 使用Git子模块

    1. BAD :难以使用
    2. :?

4 个答案:

答案 0 :(得分:2)

关于" " pro 的论点存储库(以及它的 con 对应物)并不能保持它的基础。

  

我可以一次跟踪所有项目,而且我没有分散,更容易管理

您已经注意到了自己:使用一个存储库不会让您正确地利用标记,将历史记录区分开来会很麻烦。

在我看来,它完全相反。管理和跟踪将更加困难。

正如我所看到的,不同的存储库是最佳选择。


您有三个不同的子项目,其历史记录或多或少。如果你想以某种方式将它们分组submodules可能是要走的路,使用" main"整个项目的存储库。

这"主要"存储库还可用于跟踪 Documents 文件夹。

答案 1 :(得分:2)

我通常遵循的规则是:

  • 分支并一起发布的代码进入一个存储库。
  • 分支并独立发布到单独存储库中的代码。

这是因为在git中你不能分支或标记存储库的某些部分(例如在Subversion中) - 分支和标记总是用于整个存储库。

所以问题是:你总是把所有部分放在一起吗?或者它们是单独开发和发布的(甚至可能是不同的版本号)?

答案 2 :(得分:1)

一个git存储库中的多个项目是一个反模式。特别是当使用maven和CBI(例如Jenkins)时。当你的(子)项目使用不同的版本时,使用maven发布插件与git结合是不可能的。如果您对所有项目都有相同的版本,那么这可能表明您可以选择一个repo解决方案。但我建议不要这样做。 我们决定将一个存储库用于多个相关项目,但有充分的理由,但我再也不会这样做了。

关于子模块和其他解决方案:这取决于你对git的熟悉程度。如果git是新的,即使没有子模块,也不要低估学习曲线。

question与您的非常相似。

答案 3 :(得分:0)

我认为,对多个GIT项目都有好处。 (不确定选择,作为上面提到的优点和缺点) 我正在考虑的原因是:将来我得到任何只需要在移动项目中进行更改的要求,然后您就不必担心其他项目的更改/分支/部署。 您可以轻松地继续更改一个项目,并为其他项目保持相同。