2

私は一日中、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 などについてすべて知っています。私は興味がありません。

4

2 に答える 2

7

基本的に、sshはパスワードの入力を求められたときにハングします。Windowsの内部的な詳細により、入力がパイプ(Emacs)からのものである場合と、コンソールウィンドウ(bashまたはcmd.exe)で入力される場合では、入力の処理が異なります。ssh.exeとgit.exeが適切なタイミングでバッファーをフラッシュしていない場合、入力がEmacsからパイプインされるときに、入力がそれらの間に途方に暮れる可能性があります。これは、Emacsが入力を要求する独自の別のサブプロセスを実行するサブプロセスを実行している場合にのみ発生します。

gitとsshのソースコードを掘り下げずに私が知っている唯一の回避策は、ssh-agentで公開鍵認証を使用し、Emacsからgitを使用する前に鍵を事前承認することです。これにより、sshがパスワードの入力を求める必要がなくなります。ただし、これがgithubのオプションかどうかはわかりません。

于 2012-08-01T00:52:22.067 に答える
2

@JSON の最後のポイントは、「公開鍵暗号化」です。

ここに馬の口からの情報があります - github docs

.shrcファイルからの使用方法など、ssh-agent の動作に関する詳細情報を次に示します。

基本的に、github で公開鍵をセットアップしたら、ssh-add を使用してブートごとに 1 回パスワードを入力するだけで、すべてが魔法のように機能します。

于 2012-08-01T12:21:26.413 に答える