我使用TortoiseHg和hg git Mercurial插件与Github交互,根本不使用git,只使用hg。在Github上,我分叉了熊猫回购。我成功地将我的fork克隆到了我的计算机上。我想将原始pandas repo添加为Hg中的URL,这样我就可以从该repo中提取更改,并将它们与我自己所做的任何更改相集成。我在TortoiseHg的URL中以"上游"的名称添加了原始熊猫repo。
然而,如果我试图从原始的上游回购中提取,Hg会挂起很长一段时间,然后最终会发出"504-网关超时"错误。如果我直接克隆熊猫回购(而不是克隆我的分叉(,我可以很好地从中提取。
奇怪的是,似乎并不是所有的回购都会发生这种情况。我对matplotlib repo做了同样的过程(fork,克隆fork,然后尝试从原始repo中提取(,它似乎从原始repo中提取得很好。
更奇怪的是,如果我克隆了原始的repo,然后添加我的fork作为额外的URL,我可以从两者中提取。因此,在最初的克隆过程中设置的URL是可以的,但手动设置与源相同的URL是不起作用的。
这似乎表明问题出在熊猫回购上。这可能吗?Github上是否有一些设置可能会影响我从回购中提取的能力?我该怎么做才能让它正常工作?
我通过命令行用hg-git
重复了这个过程,但无法复制问题。因此有几种可能性:
- (您的(TortoiseHG(配置(要么有问题
- 在TortoiseHG中输入URL时,您出现了某种类型的拼写错误
hg-git
中有一个奇怪的角落案例- 某些东西在您的
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 repo将自动进行,或者您可以通过hg gexport
强制它进行更新。