【问题标题】:Is it possible to clone with hgsubversion in steps?是否可以分步使用 hgsubversion 进行克隆?
【发布时间】:2011-05-29 01:30:05
【问题描述】:

我正在尝试使用 hgsubversion 克隆一个相当大的 subversion 存储库。

hg clone --startrev 8890 svn+https://my.reposit.ory/trunk trunk_hg

大约一个小时后,clone 操作中止并显示 内存不足 消息:

[r20097] user: description
abort: out of memory

是否可以为clone 操作指定一个结束修订并使用pull 获取剩余修订?或者以某种方式以更小的步骤分解clone

【问题讨论】:

  • 刚刚找到doc,其中提到了out of memory的情况,也是接受答案的解决方案;目前 (r777) 在参考文档的第 228..238 行。

标签: mercurial clone hgsubversion


【解决方案1】:

正如其他人建议的那样,您可以使用 -r 为克隆指定停止修订。另一种选择(如果您将克隆保留在崩溃的地方)是在trunk_hg 副本中运行hg pull。您可能必须自己编辑/创建.hg/hgrc 才能添加[paths]\n default = svn+https://my.reposit.ory/trunk,因为我认为我们会在克隆过程结束时添加它。也许在你拉之前运行hg svn rebuildmeta只是为了防止在OOM发生时hgsubversion的跟踪元数据被淹没。

我希望这会有所帮助!

【讨论】:

  • 愚蠢的我!没有意识到-r 指定了停止修订,而不是变更集范围。现在它起作用了。 hg clone --startrev 8890 -r 10000 ... 初始化了 repo 和随后的 hg pull -r xxxx 让我添加剩余的颠覆修订。
  • 不幸的是,OOM​​ 后的 pull 不起作用,因为到目前为止检索到的 repo 在中止后会自动删除。
  • 在每个pull 的末尾都会出现一条中止消息:pulled xxx revisions \n abort: 00changelog.i@11000: no node!。对此有何解释?好像问题不大,可以继续拉。
  • 不,我从未在这里观察到该错误。如果它是无害的,我想我只是建议忽略它。
  • 对我不起作用:hg pull -r 4951** Unknown exception encountered with possibly-broken third-party extension hgsubversion ... ValueError: 20-byte hash required
【解决方案2】:

http://www.selenic.com/mercurial/hg.1.html#clone

可以尝试使用-r <revid> 标志仅克隆特定的变更集。虽然这可能适用于 hgsvn,也可能不适用于 hgsvn。

【讨论】:

  • 当我指定-r 8890:20000 时,我收到错误unrecognised Subversion revision 8890:20000: only numbers work.
【解决方案3】:

在有限的修订范围内克隆然后拉取是推荐的方法,我可以确认它对于几 GB 大小范围内的 svn 存储库完美无缺。

【讨论】:

    【解决方案4】:

    这是克隆整个 svn repo 的解决方法:

    1. 开始克隆
    2. 立即中止它(在 Windows 中为 Ctrl+C
    3. 比汞拉
    4. 你的内存不足
    5. 重复第 3 步,直到检查出所有提交

    【讨论】:

      猜你喜欢
      • 2023-03-11
      • 2017-07-15
      • 2016-07-22
      • 1970-01-01
      • 2019-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多