Mercurial 处理子目录项目中的共享依赖项
这(我猜)不是很少见,但人们如何处理子回购中的常见链接呢?这可能只是一个原因,这就是为什么subdirs是一个痛苦的屁股使用Mercurial 处理子目录项目中的共享依赖项,mercurial,Mercurial,这(我猜)不是很少见,但人们如何处理子回购中的常见链接呢?这可能只是一个原因,这就是为什么subdirs是一个痛苦的屁股使用 Subrepo A has a subrepo B at rev 5 Subrepo C has a subrepo B at rev 10 Subrepo D has A and C. There is now a conflict between the Bs in some build systems. 因此,您可以得到依赖关系结构: D___A__B
Subrepo A has a subrepo B at rev 5
Subrepo C has a subrepo B at rev 10
Subrepo D has A and C. There is now a conflict between the Bs in some build systems.
因此,您可以得到依赖关系结构:
D___A__B
\__C__/
即使您设法使A和C指向同一版本,仍然有两个代码副本会产生冲突
更好的可能是说“A在第5次修订时需要B”,“C在第10次修订时需要B”,“D在第X次修订时需要A”,“D在第X次修订时需要B”和“A在这里,B在这里,C在这里,D在这里,找到冲突”,但我认为目前不可能这样做。你不需要处理它,相反,这种情况并不太常见 首先,
非常不鼓励在目录之外有一个子回购,并且设置至少需要一个外部子回购
其次,即使你建立了一个外部回购协议,也不建议有多个回购协议引用单个回购协议
是的,这是可能的,但进入那种状态已经很难了,如果有人真的带着这个来找我,我会告诉他,他应该重新考虑他的配置。不管怎么说,这里有一股难闻的气味,mercurial不负责处理这件事。我想唯一可行的选择是永远不要在项目中使用可重用库,在这样做时(通过将源代码复制到项目中)丢失所有跟踪信息,或者只将B用作外部库(这更难调试,并且会丢失依赖项版本锁定)复制肯定不理想。B可以在D中跟踪,但它不必是外部库,因为它不在A和C中。