我已经开始将存储库克隆到我的本地计算机。存储库包含 2 个子存储库。首先,这两个子存储库将其他存储库引用到同一 mercurial 中(.hgsub 文件包含路径)。后来(正如我在文件修订历史记录中看到的那样)另一个程序员修改了 .hgsub 文件,其中包含指向同一命名存储库的另一个路径,该存储库托管在另一台服务器上,我无法访问。后来,他将这些子存储库引用回我们服务器上的主存储库。因此,最新的存储库仅包含来自我们服务器的代码。
所以我开始克隆存储库。Mercurial显然应用了从一开始就进行的所有修订。当涉及到修订子存储库路径更改时,它会要求授权到另一个服务器 Mercurial。我无法访问该服务器。因此,克隆过程在此处停止,状态为失败。我已经分别克隆了这两个子存储库,并将它们复制粘贴到本地存储库的正确位置。打开主解决方案并尝试构建它,但由于某些项目对库的引用已过时而出现错误。我删除了它们并再次引用。尝试再次构建,但某些库不包含某些方法。而且我无法将它们更新到最后一个修订版,因为克隆不成功。我不知所措。有人遇到过类似的情况吗?
尝试克隆主存储库而不同时更新工作目录,这应该允许您在不同时拉取子存储库的情况下拉取主存储库。如果这不起作用,则跳过此步骤。
然后尝试将[subpaths]
部分添加到存储库的hgrc
文件或 mercurial.ini 文件(在 C:\users\用户名\ 文件夹下)。
部分允许您重新映射文件路径的部分,非常适合子存储库的完整路径位于 .hgsub 中但存储库已移动的情况。
每行的格式为
original path = new path
它绝对支持常规的本地文件路径,UNC路径,http(s)和ssh。
下面是一些示例子路径行:
[subpaths]
https://code.server.com/originalrepo = ssh://other.server.com/movedrepo
https://code.server.com/originalrepo = https://other.server.com/movedrepo
C:\Projects\originalrepo\ = \serverprojectsmovedrepo
请注意,= 左侧的路径必须正确转义反斜杠,右侧的路径则不然。