私は一日中、Windows 7 x86 の emacs シェル (バージョン 24) 内で git を動作させようと試みてきました。(*) 犯人は、実際には動作しない ssh です。たとえば、次のように入力します。
ssh -T git@github.com
emacs 内で使用されるシェルのタイプ (emacs シェル (別名 eshell) または msys bash) に関係なく、永久にハングします。emacs 以外では、(bash または cmd.exe で) 正常に動作します。
-T
「疑似 tty を割り当てない」というパラメーターに注意してください (少なくとも Windows では、emacs は疑似 tty を割り当てることができません)。それは問題ではありません。
MSYS(msys-gitではない)または「Git for Windows」のssh.exeを使用してみました。注意してください!「Git for Windows」は「Github for Windows」と同じものではありません。「Git for Windows」は、msys-git (この目的のためだけに存在する開発環境) の下で git をビルドすることによって得られるバイナリーおよびサポート・ユーティリティーのインストーラーです。このため、"Git for Windows" はしばしば誤って msys-git と呼ばれます。
「Github for Windows」と入力します。彼らのバージョンの git/ssh を使用すると、emacs シェルで 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 シェル内で git を使用できなくなります。
(*) はい、私は vc-git、magit、tramp などについてすべて知っています。私は興味がありません。