Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mercurial 处理子目录项目中的共享依赖项_Mercurial - Fatal编程技术网

Mercurial 处理子目录项目中的共享依赖项

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

这(我猜)不是很少见,但人们如何处理子回购中的常见链接呢?这可能只是一个原因,这就是为什么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
   \__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中。