我们正在开发一个多个项目将要使用的内部框架。 我们的想法是将整个框架视为一个多变的 每个项目的存储库的子存储库。这导致以下结果 subrepo tree(见thin-shell repository):
ProjectMaster/
Project/
CommonLib/
FrameworkMaster/
Framework/
CommonLib/
一般来说,这个解决方案听起来很难理解。有什么建议吗?
答案 0 :(得分:2)
根据thin-shell repository文档中的说明:
For a thin-shell repository, all repositories containing 'real' code
have no subrepositories of their own (ie. they are leaf nodes). They can
thus be treated as completely ordinary repositories and a developer can
largely ignore the additional complexities of subrepositories. Work can
continue in these repositories even if their siblings become unavailable.
您所描述的结果结构具有包含“真实”代码的嵌套子存储库,因此不是推荐的方式。根据mercurial文档,推荐的结构如下(我不知道/ FrameworkMaster /是否只包含嵌套子库的占位符,或者它还有'真正的'代码。如果/ FrameworkMaster /也有'真'代码然后它也应该作为兄弟叶节点包括在下面:
ProjectMaster/
Project/
Framework/
CommonLib/
所以,回答你的问题:
- 这对你有意义吗?是否有更好/更简单的方法来处理这些不涉及子存储库的依赖项?
更好/更简单的方法是使用瘦shell存储库来简化复杂的依赖关系。
- 具体来说,同时拥有两个CommonLib子库是否合理?
如果项目和框架都依赖于CommonLib的相同 版本或分支那么在两者上都没有意义地方。但是,如果出于某些遗留原因,Project和Framework需要CommonLib的不同 版本或分支,那么在两个地方都使用CommonLib是有意义的。
- 你会在哪里打开功能分支?在主人?只在相关的子库中?
这里不确定功能分支的含义。你是不是想在这里说“未来”?