hg-git可以从分叉回购中获取,但不是原始回购

时间:2013-01-19 21:44:12

标签: mercurial github tortoisehg hg-git

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

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

奇怪的是,所有回购似乎都没有发生这种情况。我使用matplotlib repo执行了相同的过程(fork,克隆fork,然后尝试从原始文件中拉出),它似乎从原始repo拉出来就好了。

更奇怪的是,如果我克隆原始仓库,然后将我的分叉添加为额外的URL,我可以从两者中提取。因此,原始克隆期间设置的URL是可以的,但是手动设置相同的URL作为源不起作用。

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

1 个答案:

答案 0 :(得分:2)

我通过命令行使用hg-git重复了该过程,无法复制问题。所以有一些可能性:

  1. (你的)TortoiseHG(配置)存在问题。
  2. 在输入TortoiseHG的网址时,您输入了某种类型的拼写错误。
  3. hg-git中有一个奇怪的角落案例。
  4. 在您的hgrc中出现问题 - 您的全局(隐藏在主目录中)或特定于存储库的(.hg/hgrc中)。
  5. 如果您将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 repo会自动出现,或者你可以通过hg gexport强制它进行更新。