Subversionを ssh 経由で使おう2(Emacsのvc-svnを利用する)
CVSをEmacsから利用する場合は、VCを利用しています。
C-q 等でcommit などができてとても便利です。
この vc が Subversionでも使えるようなる vc-svn.el という Lisp があるので設定してみました。
手順としては以下のようになります。
また以下では
Emacsとして Meadow2、Subversionクライアントとして cygwin版のSubversionを利用しています。
vc-svn.el の入手と設定
http://subversion.tigris.org/から、最新のsubversionのソースを入手します。
現時点では subversion-1.1.4 が最新版でした。
subversion-1.1.4/contrib/client-side/vc-svn.el
が目的のブツです。
Emacsのロードパスのどこかに置いておきましょう。
.emacsに以下の記述を追記します。
(add-to-list 'vc-handled-backends 'SVN)
この状態で Subversion から checkout したファイルを編集して c-q 等でコミットしようとすると Emacs がハングアップします。
svn+ssh アクセスが ssh のパスフレーズ入力を要求するのでハングしてしまうというわけです。
(パスフレーズを設定していない場合はこの状態で動くので以下の手順は不要です。)
ssh-agentの設定
ssh-agentというツールを使うと、ssh の秘密鍵に対するパスフレーズの入力を記憶してくれて、一度入力すれば同一セッション内では、再起動するまでパスフレーズの入力は不要になります。
なので.bashrcなどに以下の記述を追記しておきます。
eval `ssh-agent` ssh-add /home/higepon/.ssh/id_dsa
これをやっておくと、cygwin の bash を開いたときにパスフレーズを聞かれるようになります。
そこで一度パスフレーズを入力しておけば、閉じるまで ssh 接続時にパスフレーズの入力が不要になります。
この状態で、 bash からMeadowを起動します。
そしてお目当てのファイルを、編集後コミットするとうまくいくはずです。
これで Emacs 上でファイルを編集して、遠隔のSubversionに ssh 経由で commit などをできるようになります。
ただこれはちょっとイケてないところがあって、
という部分に不満が残ります。
もし同様のことを、もっとうまい方法でやっていたり、「俺も同じ事やっているよ」という方がいらしたらぜひコメントを。
(自分がやっていることが、邪道かどうか?等の判断基準がなくて困っているので。。。)