4

我正在尝试将变更集从使用 TortoiseHg 创建的本地 Mercurial 存储库推送到远程 Git 存储库。我已经安装并配置了 hg-git,它会拉得很好。但是当我运行 push 它给了我这个

命令

hg push git+ssh://git@dummyrepo:username/repo.git

结果

pushing to git+ssh://git@dummyrepo:username/repo.git
importing Hg objects into Git
creating and sending data
abort: the remote end hung up unexpectedly

为了达到这一点,我做了几件事。但我希望解决最后一件事,因为我发现 TortoiseHg 比任何 Git 工具(适用于 Windows)更容易使用。

  • 安装 TortoiseHg
  • 从http://bitbucket.org/durin42/hg-git/拉下 hg-git
  • 将 mercurial.ini 配置为指向 hg-git 库
  • 从 git://git.samba.org/jelmer/dulwich.git 拉下 dulwich 源
  • 编译 dulwich 并放入 TortoiseHg 的 library.zip
  • 配置 TortoiseHg 以使用 TortoisePlink.exe 进行 ssh
  • 将我的私钥添加到选美

有什么想法我可能会错过吗?

4

4 回答 4

2

我遇到了同样的问题。读完这篇文章后,我只是复制了 plink.exe,将其重命名为 ssh.exe 并将其放在我的 Windows PATH 中。效果很好。

注意:我安装了 msysGit 以仅使用 Git Bash,因此如果您为 Windows CLI 安装了 Git,那么这可能不是一个好主意,因为这两个 ssh 二进制文件可能会发生冲突。

于 2010-12-12T13:58:42.127 回答
1

您是否将 Dulwich 配置为使用 plink.exe 而不是 ssh.exe (OpenSSH) ?

我刚刚直接破解了我的 Dulwich 副本:

客户端.py:

    def connect_ssh(self, host, command, username=None, port=None):
    #FIXME: This has no way to deal with passwords..
    args = ['C:\\Program Files (x86)\\PuTTY\\plink.exe', '-x', '-batch']

此外,您必须先通过 PuTTY 建立 1 个连接以缓存 git 服务器的公钥。

于 2010-08-03T13:33:07.260 回答
0

后来我发现我的问题的答案是我使用的 git 服务器为我设置了配额,而我超过了配额。太糟糕了,我没有收到更好的错误消息。一旦我联系了他们的客户服务,他们就会告诉我。解决此问题后,我能够推动。

于 2010-12-13T17:30:22.857 回答
0

Wireshark 有什么要说的?你能提供一个来自 hg 的 tcp 连接的转储吗?最有可能的是,irc 中 freenode 上的#mercurial 中的人将能够提供帮助。

于 2010-05-14T01:18:12.500 回答