这是另一个 GIT 新手。
- 我想在我们的项目中使用 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 存储库,我开始研究子模块。但这似乎是关于更多的静态库。在 app.win 上工作的人需要做很多工作来拉取所有其他子模块并确保拥有最新版本。
子树
对于这些,唯一的解决方案似乎涉及一些脚本来处理依赖关系。因此,它增加了日常工作流程的负担。熟悉 GIT 已经足够我们日常工作的开销了。
多存储库
这个解决方案有很多优点。它看起来很干净。它清楚地将工作主题等分开。但我不知道如何以这种方式处理项目之间的依赖关系。app.win 怎么会引用(*) gui.win?
全局存储库
然后我认为唯一的解决方案是拥有一个包含所有内容的大型存储库。那是现实的吗?(给出一个数量级:这棵树的共同点应该少于 10 个项目,大约有 20 个应用程序)。然后,我们可以为每个应用程序使用一个主分支(一个用于common),并为子项目、功能或热修复使用子分支。我们将使用像“app1.v1.0”这样的标签来发布里程碑。
* 因为我正在使用 VisualStudio,所以我在这里使用了一些这个术语。项目是一组输出库或应用程序的文件。并且引用是指向另一个项目的输出或访问源代码的链接(就像使用相同的项目有不同的解决方案一样)