每个Eclipse项目或一个Git仓库的多个Git仓库

我正在从SVN转移到Git的过程中。 在SVN中,我在单个SVN存储库中有多个eclipse项目,方便浏览项目。 我打算移动到每个Eclipse项目有一个git存储库,但是EGitbuild议不要这样做。

EGit的指南build议将多个项目放到一个Git仓库中。

看着类似的问题,这个build议每个仓库一个项目。

哪种方法是最佳实践,人们实施什么?

这取决于这些项目的密切程度。 问自己以下问题:

  • 他们总是需要分支/标签在一起吗?
  • 你想要承诺所有的项目,还是只提交一个项目?
  • 这个构build系统是在所有这些系统上运行还是在那里有一个边界?

如果你把它们放在一起,上面的一些东西就会容易一些。 您只需在一个存储库中分支/标记/存储/提交,而不是分别为每个存储库执行此操作。

但是,如果您需要为项目设置不同的发布周期,则需要将每个项目放在独立的存储库中。

请注意,您以后可以随时拆分存储库,也可以将多个存储库再次合并为一个,而不会丢失历史logging。

合并比分裂要困难得多,所以我会先去找一个仓库,看看它是怎么回事。

每个项目使用1个回购。

有些推理:

  • 当你发现你在多次提交之后搞砸了一些东西的时候,只要一个项目就可以更容易地修复。 试想一下,你做了两个其他的项目,现在你需要解决你在第三个项目上的提交。

  • 正如Fedir所说,你的历史和日志更清洁。 它只显示该项目的提交。

  • 它对我所拥有的开发stream程有更好的效果。 我有一个生产主分支,开发分支,以及开发,我创build分支来实现function(你可以在这里阅读更多关于它: http : //blog.avirtualhome.com/development-workflow-using-git/ )

  • 当你在一个团队工作,所以“分享”git回购,团队成员是否真的需要所有其他项目?

只有几个想法,但它归结为:做什么适合你。

我有多个项目(Eclipse项目),并尝试了不同的东西,以找出实际日常发展方面的最佳工作。 这是我发现的,我认为如果大多数人跟踪结果并客观地分析结果,大多数人会find同样的东西。

总之应用以下规则将会给出最好的结果:

  1. 为每个项目组创build一个单独的存储库。
  2. 每个项目组由一组彼此紧密连接的项目组成,这些项目应该一起pipe理,不能轻易地彼此分离。
  3. 一个项目组可以包含一个项目。
  4. 应该检查一个包含多个项目的项目组,看它的一些项目是否可以相互分离,以便将其拆分成较小的项目组,这些项目组仍然包含彼此紧密连接的项目,这些项目应该一起pipe理而且不能轻易地彼此解耦。

以下准则解释了确定将哪些项目放入同一存储库的更详细过程:

  1. 如果某个项目与其他项目没有紧密联系(例如,可以在没有其他项目被打开的情况下打开该项目,并且在打开项目时没有其他项目依赖于该项目),那么您应该将其置于其自己的存储库中出于上述答案中解释的原因。

  2. 如果一个项目依赖于其他项目或其他项目依赖于项目,那么究竟是如何相互连接,如何将它们打包在一起以及如何轻松地将它们彼此分离。

A)例如,一个包含junittesting类来testing一个主项目类的testing项目就是两个项目彼此联系紧密,可以很容易地打包在一起,不能轻易地彼此分离的情况。 由于下面C部分所述的原因,这些项目应放置在同一个存储库中。

B)在一个项目依赖另一个项目来提供某种共享资源的情况下,真正归结为它们可以如何一起pipe理,以及它们可以如何轻松地彼此分离。 例如,如果具有共享资源的项目被许多项目所依赖,则应该将其放入其自己的存储库中,因为其他不相关的项目会受到共享源代码项目更改的影响。 在这种情况下,共享资源项目应该从依赖项目中分离出来,而不是直接连接到依赖项目上。 (例如,最好创build版本化的归档文件[例如名称为“projectName”.1.0.1.0.jar的Jar文件],并在每个项目中包含这些文件的副本,而不是通过链接项目来共享资源一起。)

C)如果多个项目连接在一起,可以很容易地一起pipe理,但是不能很容易地彼此解耦,那么这取决于它们之间的紧密联系。

I)如果将项目放入一个存储库,则每次存在提交时项目将在存储库中保持同步,如果项目紧密连接,则可以成为真正的救命。 但是,这也造成了上述答案中提到的问题。

II)如果项目被放入不同的仓库,那么你必须小心保持那里的提交同步,并确保包括某种机制来指出哪些提交属于项目中的同一同步点也许像是在项目中完成一组提交时,在每个项目提交的注释中包含相同的同步点号。

III)所以在这种情况下,将这些项目集中到一个存储库中几乎总是比较好的,以减less人工同步提交时的开销,并在需要提交的时候避免人为错误。 将它们放置在不同的存储库中的唯一时机是,只有其中一个项目正在定期更换,而其他已连接的项目很less被更改。

我想这个问题跟我在这里回答的有关。 基本上Git本身支持一个非常好的粒度结构,当涉及到项目/存储库。 我已经阅读并被教导,每个项目一个仓库几乎总是最好的做法。 与其他人所描述的一样,通过保持项目独立和获得很多,你几乎失去了一切。

如果您将创build多个git存储库,可能会更高效。

如果您将分支,只有项目的文件将分支,而不是所有的项目。 小项目分析会更快,提交。 操作将花费更less的时间。

日志也会更清晰,如果你有多个git仓库,你可以做更多粒度configuration。