过去(这里和这里)有关于Hg子回购依赖关系的几个问题但是接受的答案似乎并没有解决我的问题.
我的一个项目有4个依赖项:A,B,C,D.D依赖于A,B和C; 而B和C依赖于A:

我想使用Hg子存储库来存储它们,以便我可以跟踪它们所依赖的每个版本.这是因为,当我用A,B,C和d在这个项目,其他项目将需要的只是A和B.因此,B和C必须独立于D来跟踪它们所需的A版本.同时,在我的应用程序中,给定版本的D引用的B和C版本必须始终使用与A引用的版本相同的A版本.给定版本的D(否则它将在运行时崩溃).我真正想要的是允许他们在同一目录中作为兄弟姐妹互相引用 - 即D's .hgsub看起来像下面这样,而B和C看起来就像是第一行.
..\A = https:(central kiln repo)\A
..\B = https:(central kiln repo)\B
..\C = https:(central kiln repo)\C
Run Code Online (Sandbox Code Playgroud)
然而,这似乎不起作用:我可以看到为什么(给人们足够的绳索让自己挂起来很容易),但我觉得它是我的依赖关系的最佳解决方案,这是一种耻辱.我已经阅读了一些建议的解决方案,我会快速概述这些解决方案以及它们为什么不能为我工作:
将副本包含为嵌套子目录,将这些副本引用为Hg子存储库.这会产生以下目录结构(我删除了A,B,C,B\A,C\A的主副本,因为我可以接受引用\ D中的副本):
这种方法的问题:
变体:使用上面但指定.hgsub的RHS指向父副本中的副本(即B和C应该具有下面的.hgsub):
A = ..\A
Run Code Online (Sandbox Code Playgroud)
这种方法的问题:
使用符号链接将文件夹\ D\B\A指向D\A等.
这种方法的问题:
这些是最好的解决方案吗?我的初始.hgsub(见上)是一个梦想有没有一个很好的理由,还是有办法我可以请求/实现这个改变?
更新以更好地解释A,B,C,D的更广泛使用
我为几个不同的客户提供了几个ANT项目; 我对我的项目的目录结构如下所示:
L___standard_workspace
L___.hg
L___validation_commons-sub-proj <- JS Library/Module
| L___java
| | L___jar
| L___old_stuff
| L___src
| | L___css
| | L___js
| | L___validation_commons
| L___src-test
| L___js
L___v_file_attachment-sub-proj <- JS Library/Module
| L___java
| | L___jar
| L___src
| | L___css
| | L___js
| L___src-test
| L___js
L___z_business_logic-sub-proj <- JS Library/Module
| L___java
| | L___jar
| L___src
| L___css
| L___js
L____master-proj <- Master web-deployment module where js libraries are compiled to.
L___docs
L___java
| …Run Code Online (Sandbox Code Playgroud)