【问题标题】:hg-git can pull from forked repo, but not original repohg-git 可以从分叉的仓库中提取,但不能从原始仓库中提取
【发布时间】:2013-01-03 08:38:12
【问题描述】:

我使用 TortoiseHg 和 hg-git Mercurial 插件来与 Github 交互,根本不使用 Git,只使用 Hg。在 Github 上,我分叉了 pandas repo。我成功地将我的叉子克隆到我的电脑上。我想将原始 pandas 存储库添加为 Hg 中的 URL,因此我可以从该存储库中提取更改并将它们与我自己所做的任何更改集成。我在 TortoiseHg 的 URL 中添加了原始 pandas 存储库,名称为“upstream”。

但是,如果我尝试从原始上游 repo 中提取,Hg 会挂起很长时间,然后最终会发出“504 - 网关超时”错误。如果我直接克隆 pandas 存储库(而不是克隆它的 fork),我可以从中提取。

奇怪的是,这似乎并非所有 repos 都会发生。我用matplotlib repo 做了同样的过程(分叉,克隆分叉,然后尝试从原始库中提取),它似乎可以从原始存储库中提取。

更奇怪的是,如果我克隆原始 repo,然后将我的 fork 添加为额外的 URL,我可以从两者中提取。所以不知何故,在原始克隆期间设置的 URL 是可以的,但是手动将相同的 URL 设置为源不起作用。

这似乎表明问题出在 pandas repo 上。这可能吗? Github 上是否有一些设置可能会影响我从该回购中提取的能力?我该怎么做才能让它发挥作用?

【问题讨论】:

  • 是否涉及代理服务器?如果是这样,很可能是代理服务器上的超时时间过低造成的。
  • @davidmc24:我没有使用代理服务器。此外,我不明白这如何解释它适用于一个 repo 而不是另一个 repo,或者如果我直接克隆原始 repo,我可以从完全相同的 URL 中提取。
  • 我对代理服务器的猜测是基于错误代码,这似乎通常与某种形式的代理有关。如果涉及代理,则克隆和拉取之间的差异可能是由于所进行的网络调用的细微差异是否在超时范围内。同样,由于大小或对象组成的差异,此 repo 与其他 repo 之间的行为差​​异可能是可以解释的。

标签: mercurial github tortoisehg hg-git


【解决方案1】:

我通过命令行使用hg-git 重复了该过程,但无法重现该问题。所以有几种可能:

  1. (您的)TortoiseHG(配置)存在问题。
  2. 您在将 URL 输入 TortoiseHG 时输入了某种类型的错字。
  3. hg-git 中有一个奇怪的角落案例。
  4. 在您的hgrc 中出现了问题——您的全局问题(隐藏在您的主目录中)或存储库特定的问题(在.hg/hgrc 中找到)。

如果您将 hgrc 文件作为 Github Gist 提供(根据需要匿名),这可能会提供一些见解。

与此同时,一种解决方案是手动执行 git 内容,然后强制更新:

cd path/to/hg/repo
git fetch https://github.com/pydata/pandas.git # equal to hg pull, 
hg gimport # pulls the changesets from the hidden git repo into the mercurial repo

如果这可行,那么保存的 URL 可能有问题。

您仍然需要担心合并和变基等等,但您可以在 Mercurial 中做到这一点。当您推送到 git 远程时,隐藏的 git 存储库将自动出现,或者您可以通过 hg gexport 强制它更新。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-28
    • 1970-01-01
    • 1970-01-01
    • 2020-06-27
    • 2019-02-22
    • 1970-01-01
    • 1970-01-01
    • 2013-10-03
    相关资源
    最近更新 更多