git - 使用 TortoiseHg 克隆一个可读写的 github 存储库

标签 git mercurial ssh github tortoisehg

我正在尝试使用带有 TortoiseHg 的 git+ssh 协议(protocol)在 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 并且我的 key 已经导入。我可以将 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 插件。

最佳答案

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

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

仅通过此更改,它仍将无法通过身份验证。您会看到一个 pop 框和这个。

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

所以你需要获得 pageant.exe that comes with the main PuTTy install .启动它并将您的 key 添加到其中。然后再次运行克隆命令,它应该可以很好地进行身份验证。

关于git - 使用 TortoiseHg 克隆一个可读写的 github 存储库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2573571/

相关文章:

mercurial - 使用 Mercurial 的 "hg copy file file2"的实际使用示例是什么?

testing - Mercurial - 提供独立的功能进行测试和上线

docker - SSH进入Rhel中的Docker容器

python - 通过 SSH 来自存储 Controller 的序列号

git - 特定分支的 Jenkins git commit 也会触发其他分支的构建作业

javascript - 如何解决 Git 和 pdfmake-chinese 字体的问题?

Git - 如何跟踪您从本地分支创建的远程分支?

git - merge 分支后推送时无法解析引用 refs/refs/remotes/origin/branch

mercurial - 有趣的是,当为 Mercurial 添加 .hgignore 时,此文件本身在 hg 状态中显示为 "?"?

permissions - 权限被拒绝(公钥、键盘交互)