我整天都在努力让 git 在 Windows 7 x86 上的 emacs shell(版本 24)中工作。(*) 罪魁祸首其实是 ssh,它是行不通的。例如,键入:
ssh -T git@github.com
将永远挂起,无论 emacs 中使用的 shell 类型(emacs shell(又名 eshell)或 msys bash)。在 emacs 之外,它工作得很好(在 bash 或 cmd.exe 中)。
注意-T
参数,上面写着“不要分配伪 tty”(emacs 不能分配伪 tty,至少在 Windows 上不能)。所以这不是问题。
我尝试使用 MSYS(不是 msys-git)或“Git for Windows”中的 ssh.exe。谨防!“Windows 版 Git”与“Windows 版 Github”不同。“Git for Windows” 是二进制文件和支持实用程序的安装程序,通过在 msys-git 下构建 git(专门为此目的而存在的开发环境)获得。出于这个原因,它“Git for Windows”经常被错误地称为 msys-git。
输入“Github for Windows”。使用他们的 git/ssh 版本,我可以在 emacs shell 下使用 git 和 ssh。据我所知,该程序只是简单地使用了“Git for Windows”。但是,它是一个修改版本。例如,etc/ssh/ssh_config
添加了一个文件。
我已经确定其中的一些配置etc/ssh/ssh_config
是 ssh 在 emacs 中工作的原始配置。但是,仅此一项并不能解释它为什么起作用,因为将此配置文件与“Git for Windows”一起使用并不能解决问题。
所以我想知道的是 Github 团队对“Git for Windows”做了哪些其他更改,以便它可以在 emacs 中工作。
我什至不确定“在 emacs 中工作”是否是预期目标。这就是为什么这个问题的答案很重要:如果“Github for Windows”的未来版本破坏了 emacs 兼容性,我将无法再在 emacs shell 中使用 git。
(*) 是的,我对 vc-git、magit、tramp 等一无所知。我不感兴趣。