【问题标题】:Cloning a read-write github repository using TortoiseHg使用 TortoiseHg 克隆一个读写 github 存储库
【发布时间】:2010-04-04 04:31:17
【问题描述】:

我正在尝试使用带有 TortoiseHg 的 git+ssh 协议在 github 上克隆我的个人分支。它给了我一个相当奇怪的错误。这是命令

hg clone git+ssh://git@github.com:myusername/thefork.git

这是在我安装了 hg-git 模块之后,使用 git:// 语法克隆它工作得很好。但我相信它在使用 ssh 时遇到了问题。我得到的错误是这样的。

importing Hg objects into Git
[Error 2] The system cannot find the file specified

我已经尝试像这样手动将 ssh 命令添加到 mercurial.ini 文件中

[ui]
username = email@address.com
ssh="C:\Program Files\TortoiseHg\TortoisePlink.exe" -ssh -2 -i "C:\Source\SSHPrivateKey.ppk"

但我仍然遇到同样的错误。有什么想法吗?

更新 1

如果我从 Git Bash shell 运行相同的命令,它就可以正常工作。我明白了。

importing Hg objects into Git
Counting objects: 1559, done.
Compressing objects: 100% (586/586), done.
Total 1559 (delta 960), reused 1534 (delta 947)
importing Git objects into Hg
at:  0/86
updating to branch default
219 files updated, 0 files merged, 0 files removed, 0 files unresolved

我假设这是因为它可以找到 ssh.exe 并且我的密钥已经导入。我可以将 ssh.exe 的路径添加到 windows 命令提示路径中,然后我得到这个错误,而不是之前的错误。

importing Hg objects into Git
Permission denied (publickey).
abort: the remote end hung up unexpectedly

尽管我在 mercurial.ini 中指定了备用 ssh 路径,但它似乎专门寻找 ssh.exe。但我的猜测是,该配置仅适用于启用 ssh 的 mercurial 服务器,不适用于 hg-git 插件。

【问题讨论】:

  • 自我注意——要有耐心。一旦我学会等待 5 分钟左右来克隆一个非常大的 repo,hg-git 就可以正常工作了。

标签: git mercurial ssh github tortoisehg


【解决方案1】:

我已经找到了解决这个问题的方法,但它非常老套。我注意到 ProcessMonitor 显示它在几个不同的路径中寻找 ssh.exe,所以我复制了 TortoiseHg 文件夹中的 TortoisePlink.exe 并将其命名为 ssh.exe。

copy "C:\Program Files\TortoiseHg\TortoisePlink.exe" "C:\Program Files\TortoiseHg\ssh.exe"

仅通过此更改,它仍然无法通过身份验证。你会得到一个弹出框和这个。

importing Hg objects into Git
abort: the remote end hung up unexpectedly

所以你需要获取pageant.exe that comes with the main PuTTy install。启动它并将您的密钥添加到它。然后再次运行克隆命令,它应该可以正常验证。

【讨论】:

  • 我的盒子不需要复制步骤。只需从@Nathan 提供的链接安装 putty-0.60-installer.exe,然后从“开始”菜单启动 pageant.exe。之后,您可以将您的 GitHub 密钥添加到其中。
【解决方案2】:

在花了好几个小时试图解决这个问题后,我找到了一个指南,可以完美地解释它。

这是网址: http://www.codeproject.com/Articles/376058/Step-by-step-Setup-TortoiseHg-for-gitHub

指南中没有提到的一件事是,与 TortoiseHG 捆绑的 32 位版本的 Pageant 无法识别 url 中的“git@”部分,并不断要求它。下载 64 位版本的 Pageant 可修复此错误。

下载 64 位选美: https://splunk.net/w/PuTTy64bit

我已经打开了一张包含 TortoiseHG 的 64 位选美比赛的票: https://bitbucket.org/tortoisehg/thg/issue/2145/bundle-64-bit-pageant-with-64-bit

【讨论】:

  • THG v2.5.1 似乎没问题。我的选美是 .x64 的,我还没有碰过它。
【解决方案3】:

我发现我必须启动 Pageant 并加载我的 SSH 密钥,然后最初克隆使用命令行例如:

hg clone git+ssh://git@github.com/<username>/<repo>.git

但从那时起,我可以使用 TortoiseHg 对抗 GitHub(推送和拉取)就好了(尽管 Pageant 需要运行才能进行身份验证)。

【讨论】:

    【解决方案4】:

    我使用的是“plink.exe”和“pageant.exe”而不是“TortoisePlink.exe”。当“plink.exe”需要时,“pageant.exe”会自动提供密码短语。

    【讨论】:

    • 您在 mercurial.ini 中使用的配置是什么?我已经从常规 PuTTY 发行版中尝试了 plink.exe,但我得到了同样的错误。
    【解决方案5】:

    我通过将 TortoisePlink.exe 复制到 ssh.exe 解决了这个问题。然后我将 ssh.exe 放在我的路径中。只要选美正在运行,这对我有用。

    鉴于我的路径中需要 ssh.exe,我想知道 hggit 是否甚至会读取 ssh= 行。

    这仍然是骇人听闻的,但比@Nathan 的技术要少一点骇人听闻(我不喜欢弄乱 \Program Files 中的文件)

    【讨论】:

      猜你喜欢
      • 2021-12-31
      • 2021-11-18
      • 2019-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多