Subversionを ssh 経由で使おう2(Emacsのvc-svnを利用する)

CVSEmacsから利用する場合は、VCを利用しています。
C-q 等でcommit などができてとても便利です。


この vc が Subversionでも使えるようなる vc-svn.el という Lisp があるので設定してみました。


手順としては以下のようになります。

  1. vc-svn.el の入手と設定
  2. ssh-agentの設定


また以下では
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


これをやっておくと、cygwinbash を開いたときにパスフレーズを聞かれるようになります。
そこで一度パスフレーズを入力しておけば、閉じるまで ssh 接続時にパスフレーズの入力が不要になります。


この状態で、 bash からMeadowを起動します。
そしてお目当てのファイルを、編集後コミットするとうまくいくはずです。


これで Emacs 上でファイルを編集して、遠隔のSubversionssh 経由で commit などをできるようになります。
ただこれはちょっとイケてないところがあって、


という部分に不満が残ります。


もし同様のことを、もっとうまい方法でやっていたり、「俺も同じ事やっているよ」という方がいらしたらぜひコメントを。
(自分がやっていることが、邪道かどうか?等の判断基準がなくて困っているので。。。)

おまけ ViewCVSインストール

とても簡単でした。
wget http://viewcvs.sourceforge.net/nightly/viewcvs-2005-10-25.tar.gz
tar zvxf viewcvs-2005-10-25.tar.gz
cd viewcvs-2005-10-25
sudo ./viewcvs-install # すべてデフォルトで
sudo vi /usr/local/viewcvs-1.0-dev/viewcvs.conf

svn_roots = svn: /home/higepon/svn/repos
default_root = svn