TotoiseHG:现有连接被远程主机强行关闭

TotoiseHG: An existing connection was forcibly closed by the remote host

我想将一个项目从 TortoiseHg 推送到 GitHub。我知道,TortoiseHg 是 Mercurial 分布式版本控制系统的前端;其中 GitHub 与 Git 配合使用。但我喜欢使用 TortoiseHg(而不是 TortoiseGit 或 GitGui),并希望将我的项目保留在 GitHub.

因此,我配置了 TortoiseHg (File>Settings>Extensions>hggit) 并能够将测试项目推送到 GitHub(在 this 精彩的博客)。但后来当我尝试用它推送一个 C# MVC 项目时,情况发生了变化。 它很好地开始推送,然后要求身份验证,然后显示此错误-

这是日志中显示的内容-

% hg push git+https://github.com/MinhasKamal/MVCPracticeWork
pushing to git+https://github.com/MinhasKamal/MVCPracticeWork
http authorization required for https://github.com/MinhasKamal/MVCPracticeWork/info/refs
realm: GitHub
searching for changes
adding objects
URLError: [Errno 10054] An existing connection was forcibly closed by the remote host
[command returned code 255 Thu Feb 04 16:17:02 2016]

我不明白 - 为什么会发生此错误。这是 GitHub 或 TortoiseHG 的问题,还是我做错了什么?如何解决?


编辑 1: 我可以推送到存储库,但是 只能通过 'not adding' 一些特定的目录到我的存储库 .是否有任何文件类型或名称导致此错误?


编辑 2: 我又遇到了这个问题,这次是 Java 项目。一切都很好,直到我在存储库中添加了一个 *.jar 文件。我进行了提交,但是当我尝试将其推送到 GitHub 时,TortoiseHg 向我显示了相同的消息。我删除了 *.jar,提交并尝试再次推送,但不能。

现在,我又做了一次之前的操作(编辑 1)- 我将整个存储库从 GitHub 拉到另一个文件夹,替换了我 PC 上当前存储库中更改的文件(没有添加*.jar),提交并推送;这次我成功了。所以,这次 *jar 文件没有添加到版本控制数据库,这就是它起作用的原因。

  • 我看不到任何推送到MinhasKamal/MVCPracticeWorkThis repository is empty.
  • 您可以使用此 repo 的 .hgrc 中的 [auth] section(在其中定义用户名和密码)
  • 自动推送过程(无手工操作、无超时、无输入错误)
  • 至少一些初始测试推送在纯 CLI 中执行会更好(更多信息和可读输出)

如果您尝试将超大文件添加到任何存储库,Github 就会出现问题。虽然我不知道这是不是你的问题。

我在 Mac 上对 HG 和 Git 进行了更改,并尝试将其推送到 github。 Git 当我 运行 git push 时向我显示文件太大消息,但 HG 只向我显示推送失败。

如果您的 .jar 或您添加的任何文件导致问题,您可以检查文件大小是否超过 limit (from github) and this one

到目前为止,经过许多评论,似乎 content 某些二进制文件类型(如 - *.jar*.mp3 等但不是 *.png) 是有问题的:

  • 不是文件大小(尽管文件是 really large,这也是一个问题,但这里没有)
  • 不是它的扩展名(OP 添加了 "I had a photo and I renamed it to *.jar, and it worked")

为了保持类似的最终用户体验,测试将是安装 TortoiseGit,然后查看 git 推送是否适用于一个经典的 git 克隆仓库。

只有在使用HTTPS 协议时才会出现此问题。如果您改用 SSH(这很笨拙,但在 Windows 上仍然可行),推送将会成功。

有关详细信息,请参阅 https://www.mercurial-scm.org/pipermail/mercurial/2017-March/050304.html。我建议阅读整个线程,它只有六个消息。