繁体   English   中英

Git组织为多项目团队

[英]Git organisation for a multi-project team

这是另一个GIT newb'。

  • 我想在我们的项目中使用GIT。
  • 团队不熟悉GIT。

这些项目基本上包括一些常见项目(*)和一些应用程序项目。 应用程序正在使用公共资源,公共资源也可以使用其他公共资源。 通过“使用”,我的意思是他们共享源代码会很棒。 或者至少项目可以使用共同项目的已编译dll。 以下是我希望文件夹结构如何的示例:

common
+-- basics
    +-- gui
    +-- utils
+-- win
    +-- gui.win
    +-- utils.win

app1
+-- win
    +-- app.win

这里的项目gui.win需要使用common> gui。 app.win肯定需要gui.win。

GIT

子模块

对于GIT存储库,我开始查看子模块。 但它似乎是关于更多静态库。 在app.win上工作的人需要做很多工作才能完成所有其他子模块并且确保拥有最新版本。

子树

对于这些,唯一的解决方案似乎涉及一些脚本来处理依赖项。 因此,它增加了日常工作流程的负担。 熟悉GIT对于我们的日常工作来说已经足够了。

多库

这个解决方案有很多好处。 它看起来很干净。 它明确区分了工作主题等。但我不知道如何以这种方式处理项目之间的依赖关系。 app.win如何引用(*)gui.win?

全球存储库

然后我认为唯一的解决方案是拥有一个包含所有内容的大型存储库。 这是现实的吗? (给出一个数量级:这棵树的共同点应该少于10个项目,并且将有大约20个应用程序)。 然后,我们可以为每个应用程序使用一个分支(对于公共应用程序使用一个分支),并为子项目,功能或热修复使用子分支。 我们会将“app1.v1.0”这样的标签用于里程碑版本。


*由于我正在使用VisualStudio,我在这里使用了一些术语。 项目是输出库或应用程序的一组文件。 引用是指向另一个项目输出或访问源代码的链接(就像使用相同项目的不同解决方案一样)

您可以将git子模块用于任何类型的子模块,它不仅限于静态库。 例如,我的~/.vim文件夹是版本化的,并且为我安装的每个插件都有几个子模块。

我认为这是首选解决方案,因为主存储库可以记住项目使用的修订版本,并且您可以使用单个命令同步所有子模块。

因此,您可以让一个团队或一个人在子模块上工作,作为项目本身,进行更改,提交等等。 如果要包含更改,只需在主存储库中执行此操作,您就不必为任何正在进行的版本打扰。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM