jst*_*ker 5 git clearcase git-submodules
我的公司正在将我们的版本控制工具从Rational ClearCase更改为Git.我们有以下开发方案,我们很好奇Git是否有适当的模式来实现我们在ClearCase中的相同行为.
以下是关于我们情况的一些基本观点:
- 我们有许多独立的应用程序.我们称之为AppA,AppB和AppC.
- 我们还有一些所有项目共有的文件(构建脚本等).我们称之为工具.
- 对于AppA,AppB或AppC代码的任何给定剪切,我们需要特定的工具代码剪切.
- 我们的大多数开发人员从不修改工具代码.
对于ClearCase,我们这样建模:
组件:app_a,app_b,app_c,工具
项目:AppA,AppB,AppC,工具
Project AppA包括app_a作为读/写组件,工具作为只读组件.
Project AppB包括app_b作为读/写组件和工具作为只读组件.
Project AppC包括app_c作为读/写组件和工具作为只读组件.
项目工具包括作为读/写组件的工具.
App*项目的每个基线都引用app_*和工具组件的基线.当开发人员重新定义到建议的基线时,他们会从两个组件中获取更改.
对于Git,我们认为子模块可能是最接近正确答案的东西.但是,在提取/重新定位存储库时,听起来需要额外的步骤来更新子模块代码.理想情况下,我们希望透明.此外,我们不一定关心从父存储库的角度知道子模块中发生了什么变化; 我们只关心整个子模块的某个时间点.
首先,请务必了解 ClearCase 和 git 中(类似 UCM)配置之间的区别(请参阅“灵活分支与静态分支(GIT 与 Clearcase/Accurev) ”)。
在查看ClearCase 和 Git 之间的差异时,每个 UCM 组件必须在 Git 中表示为存储库。
子模块如果修改则需要额外的步骤,如“子模块的真实本质”中所述。
但它们记录了一个特定的 SHA1,这正是您拉取每个“ APP
”时所需要的。
gitslave可以让您与 ' ' 保持Tools
更紧密的联系Appx
,但我认为它不适合您的场景。
请注意,使用子模块将:
Tools
的子目录APPx