Onu*_*nur 5 git visual-studio-2010 visual-studio
我的问题最好用一个例子来描述.
假设我有一个项目"A".
我还有一个项目"B",它取决于"A".
另一个项目"C"也取决于"A".
我的"主要"项目取决于"B"和"C".它也可能直接取决于"A".
当"主要"=="D"时,看起来有点像"可怕的继承钻石 "
![]()
这些是我的要求:
我希望能够在"main"的解决方案中编辑项目"A","B"和"C"的内容并提交更改(即我不想只包含DLL而是代码).但由于"B"和"C"都依赖于"A",因此应该强制它们引用相同的提交.
项目"A","B"和"C"很可能也会被其他项目引用,因此我不能假设项目"main"的工作目录的所有权.
此外,应该可以将每个项目的存储库与外部存储库同步.
项目"A","B","C"和"主要"应该是
我如何设置我的存储库来完成此任务?
使用子模块方法,我建议使用包含依赖项列表的模型,而不是依赖项层次结构:
创建" parent"回购,其中你" git submodule add"子模块为D,C,B和A:
parent
D
C
B
A
Run Code Online (Sandbox Code Playgroud)
添加编译每个项目所需的任何符号链接(甚至在Windows中)(意味着从自己的结构中查找其依赖项的源).
" parent"repo将引用代表每个依赖项的SHA1的确切列表,它们是在父代repo历史记录中的特定时间编译/运行项目所需的确切版本.
而且,正如我在"解释子模块的真性情 ",就可以让你想在任何修改A,B,C或D,并推动各自的上游回购.
但你一定不要忘记回到parent回购,添加和提交代表因回购的新状态的SHA1修改A,B,C,和D.
这是一种组件方法,它具有解决任何重叠依赖的优点:如果B并且C需要不同版本A,则parentrepo将必须选择一个(且仅一个)版本A.
要添加OP Onur的答案:
依赖关系必须是相对的
不一定:您可以在子模块中添加符号链接,如果它需要查看另一个具有固定路径的符号链接.
创建"
user"存储库如何自动检出正确的库集,例如上面的设置中的A和B.
确定A和B的有效起始版本后,您可以在"父"上下文中创建并推送专用于其使用的分支.
然后,你让那些子模块遵循分支,这意味着任何git submodule update --remote将签出的子模块是专用分支的最新SHA1 A和B.
| 归档时间: |
|
| 查看次数: |
468 次 |
| 最近记录: |