ein*_*ica 7 version-control mercurial directory-structure subrepos mercurial-subrepos
(以下是我在组织我正在处理的源代码时所遇到的各种复杂性的"理论MCVE".你可以将它视为一个具体的问题而且会很好,或者你可以参考它提出的一般问题并建议如何解决它们.)
假设我有代码A,B,C和D的模块.A取决于B,C,D; B取决于C; C,D不依赖于其他模块.(我松散地使用术语"模块",所以请不要在这里挑剔).
另外,在A,B,C,D的所有部分中,使用了一些相同的头文件,甚至可能是编译对象,将它们组合在一起形成第五个模块是没有意义的,因为它太小了没用 让我们foo.h成为该类别中的一个文件.
虽然所有这些模块都保存在单个整体代码库中,但一切都很好.一切都是一个副本; 在使用相同功能编译的对象之间没有链接器冲突.
问题是:如何将B,C,D中的每一个都放入版本管理的存储库中,以便:
foo.hC的双重副本和C的双重副本(一次用于A,一次用于B) - 我可能总是要确保并保持完全同步.请注意,当我有更多的时间我会编辑它以使问题更具体(即使我有点像广泛的问题).我会说,在我的具体情况下,代码是现代C++,CUDA,一些bash脚本和CMake模块.因此,面向Java的解决方案是行不通的.
简而言之,您可能想要探索工件存储库 (Artifactory) 和依赖项管理解决方案(Ivy、Maven、Gradle)。然后,在构建共享基础模块时,将其粘贴到工件存储库中。当你想要构建依赖于共享基础模块的顶层模块时;构建脚本只是下拉共享基础模块的最后一个版本,并根据它下拉的内容链接/编译顶部模块。
| 归档时间: |
|
| 查看次数: |
339 次 |
| 最近记录: |