【问题标题】:Cloning into Mercurial Hg克隆到 Mercurial Hg
【发布时间】:2025-01-10 19:10:01
【问题描述】:

我已经开始将存储库克隆到我的本地计算机。该存储库包含 2 个子存储库。首先,这两个子存储库引用了其他存储库到同一个 mercurial(.hgsub 文件包含路径)。后来(正如我在文件修订历史中看到的那样)另一位程序员修改了 .hgsub 文件,使用另一个路径指向同一个命名存储库,该存储库托管在另一台服务器上,我无法访问。后来他将这些子存储库引用回我们服务器上的主存储库。因此,最新的存储库仅包含来自我们服务器的代码。

所以我已经开始克隆存储库。 Mercurial 显然应用了从一开始所做的所有修改。当涉及到修订子存储库路径发生更改时,它会要求对其他服务器 Mercurial 进行授权。我无权访问该服务器。因此,克隆过程在此处停止,状态为 Failed。我已经分别克隆了这两个子存储库,并将它们复制粘贴到本地存储库的适当位置。打开主解决方案并尝试构建它,但由于某些项目对库的引用已过时而出现错误。我删除了它们并再次引用。尝试再次构建,但某些库不包含某些方法。由于克隆不成功,我无法将它们更新到最新版本。我不知所措。有没有人遇到过类似的情况?

【问题讨论】:

    标签: mercurial mercurial-subrepos


    【解决方案1】:

    尝试在不更新工作目录的情况下克隆主仓库,这应该允许您在不拉取子仓库的情况下提取主仓库。如果这不起作用,请跳过此步骤。

    然后尝试将 [subpaths] 部分添加到 repo 的 hgrc 文件或您的 mercurial.ini 文件(在您的 C:\users\username\ 文件夹下)。

    子路径部分允许您重新映射文​​件路径的一部分,并且非常适合当子存储库的完整路径位于 .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\\ = \\server\projects\movedrepo\
    

    请注意,= 左边的路径必须正确转义反斜杠,右边的路径不需要。

    【讨论】:

    • 谢谢!!!这正是我需要的!我已经使用选中的选项不更新新的工作目录克隆了存储库。结果我只有 .hg 文件夹。然后添加带有 [subpaths] 方向的 hgrc 文件,然后更新工作目录。未请求授权!