多平台项目的最佳Git策略

9

你好,我有一个应用程序,其中包含以下几个不同的应用程序:

  1. "客户端服务器" 应用程序(Java)
  2. "许可证服务器" 应用程序(Java)(我将使用 git 在 heroku 上部署此应用程序)
  3. "自动更新应用程序"(Java)
  4. "客户端应用程序"(Objective-C)

我的 git 知识仅限于标准提交命令等基础知识,并且我有 5 个私有存储库的 GitHub 成员资格。因此,我想知道在这种情况下最佳的 git 利用方法是什么?可能的答案有:

  1. 创建一个单一的 git 存储库,并将这些独立项目放在“分支”中?
  2. 创建一个单一的 git 存储库,并只将这些项目放在不同的文件夹中?
  3. 将它们放入不同的 git 存储库中?

感谢您的回答。


感谢您的回答,希望我能够接受所有的答案 :) - dreampowder
3个回答

9
我会根据应用是否从Git直接部署来做决定。我会考虑第二个和第三个选项的结合 - 我一定会将许可证服务器应用程序放入它自己的存储库中,因为它正在部署到Heroku上。我对Heroku部署不太熟悉,但它可能会部署特定分支中的所有内容,因此如果您将所有应用程序添加到同一存储库中的文件夹中,则它们将一起部署到Heroku。这可能不是您想要的。
如果不同的开发人员/团队处理不同的应用程序,则将应用程序放在其自己的单独存储库中会更容易。
忘记第一个选项 - 分支只是指向提交的指针,因此不要将不同项目添加到不同的分支中。

将Heroku应用程序与其他项目分开,并将其他项目放在单独的文件夹中似乎是正确的方法...谢谢。 - dreampowder

6
创建一个单一的git仓库,然后将这些独立的项目放在"分支"中?创建一个单一的git仓库,然后将这些项目放在不同的文件夹中?或者将它们放入不同的git仓库中?我会选择2。根据你的各种应用/项目的大小或独立性,你可以考虑选择3,但这可能会增加太多的开销。即使是大型存储库也可以由git高效处理。单个存储库还可以使发布过程更容易,因为你可以对整个应用程序进行标记/分支,而无需在不同的存储库上执行此操作。选项1不是正确的选择-通常使用分支进行功能开发、错误修复和管理发布。另请参见成功的Git分支模型。基于评论和其他答案,如果我进一步考虑,它主要取决于项目之间的依赖关系。对于客户端和服务器应用程序以及可能还包括自动更新应用程序,我肯定会选择2。正如其他人所写,如果许可证服务器真的是独立的(那么许可证服务器的客户端部分呢?),则为该部分使用单独的存储库可能是正确的解决方案。我的看法是,使用多个存储库可能会使发布过程和设置开发人员环境的过程变得复杂。最终,解决方案可能确实是基于项目之间的依赖或独立性的2和3之间的正确平衡。

链接末尾的“.”会破坏链接,但我现在正在阅读它。 - dreampowder
@Andreas 好的,谢谢。现在我认为2可能更好。例如,我为3个移动平台开发了移动应用程序。每个项目都在单独的git存储库中。我有3台计算机(Win PC、Mac和Linux用于git服务器)。最后,我在我的两台开发机上都有了所有3个存储库,并且我必须记住手动拉取/推送更改。在阅读您的答案后,我发现将所有内容放在一个存储库中可能更好。但那只是我作为唯一的开发人员... - MichK
@MichK 如果是同一应用程序,但只是在不同的平台上,我无论如何都会使用2,并将特定于平台的部分放在特定于平台的子目录中。 - Andreas Fester
刚刚进入Github,我发现你可以选择一个gitignore文件作为整个存储库的平台函数。我假设如果您想将不同的平台合并到单个存储库中,您还将结合它们关联的gitignore文件,并希望没有冲突。 - Joe Lapp

3

以下是我的个人意见:

  1. 将这些东西放在分支中绝对是错误的,在git中,代码分支始终代表“同一”代码库的不同状态
  2. 如果两个服务器和两个应用程序之间的相互依赖足够强,则将它们放在同一个存储库中可能是一个好主意,这是我最喜欢的方式
  3. 如果这4个应用程序足够独立,则使用这种方式。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接