【问题标题】:unknown revision error when trying to pull repository from hg尝试从 hg 中提取存储库时出现未知修订错误
【发布时间】:2020-02-18 20:54:48
【问题描述】:

我正在尝试从 Mercurial 克隆一个 repo。我输入了命令:hg pull --rev=2500,它可以工作。

但是,当我尝试hg pull --rev 3000 时,它显示错误:abort:unknown revision '3000'

有人知道如何解决这个问题吗?

谢谢, 詹妮弗。

【问题讨论】:

    标签: mercurial repository pull


    【解决方案1】:

    您只需删除--revision=<em>number</em> 部分。但这里有些奇怪:hg pull 用于存储库复制变更集,而不是用于克隆存储库。

    克隆存储库意味着:

    1. 创建一个新的空存储库。
    2. 将所有1变更集从其他存储库复制到此存储库。

    从存储库中提取意味着:

    1. 将所有2来自其他存储库的变更集(他们拥有但我没有)复制到此存储库。

    请注意这两者是如何相似但不相同的。克隆操作首先创建一个新的空存储库。第 2 步,用来自其他存储库的(所有)变更集填充存储库,匹配 pull 操作的第 1 步。通过拉取,我们只添加我们没有的变更集,但由于我们新的空存储库是 empty,因此它们拥有的 all 变更集是我们没有的不。

    这两个操作都涉及调用一些其他(现有)Mercurial 存储库。第一个在进行此调用时创建您的存储库;第二个使用您现有的存储库,并进行此调用。请注意,在这两种情况下,此处的其他存储库都有自己的变更集,它们位于某些分支集上,并且其他存储库使用 its 编号对这些变更集进行编号。

    由于您已经有一个存储库,您显然只是想要hg pull。请参阅脚注 1 和脚注 2,了解 --rev=2500 正在做什么。


    1有时我们不需要所有的变更集。我们可以只使用 一些 的变更集进行有限的克隆。使用-b <em>branch</em> 进行克隆告诉 Mercurial 忽略获取指定分支上的变更集不需要的变更集。

    2和以前一样,我们可能不需要所有 个变更集。我们可以告诉另一个 Mercurial 存储库:例如,给我你的变更集以你的数字 2500 结尾。您要求它提供最多 3000 个的变更集,而此时它根本没有那么多变更集。

    【讨论】:

    • 您好 Torek,我使用 --rev 因为 repo 太大,我需要逐部分克隆它。我不能直接使用 hg clone。
    • 最好的办法是修复导致直接克隆失败的潜在问题,但作为一种变通方法,您可以使用-r 方法,您只需选择小于 3000 的数字. 我们不知道有多小:我们知道它大于或等于 2500 且小于 3000,但剩下 500 个可能的值。在这一点上,也许您可​​以忽略它:hg pull 操作会发现您已经拥有前 2500 个变更集,并且不会再次将它们带过来。
    猜你喜欢
    • 1970-01-01
    • 2020-05-10
    • 2017-08-16
    • 1970-01-01
    • 1970-01-01
    • 2014-06-06
    • 1970-01-01
    • 2018-06-11
    • 2015-10-11
    相关资源
    最近更新 更多