CoreServer で Subversion が突然使えなくなった。

なにやら、本日突然、CoreServerに設置してあるSVNが使用できなくなった。

expected format ’3′ of repository found format ’5′

というエラーが出る。なぜだ〜?昨日まではでなかったのに。
まあ、原因究明ができなかったが、対処はできた。

エラーの内容は、formatつまり、バージョンが違うことらしい。
CoreServerは標準で、1.2のsvnが入ってる。そこに、ユーザーホームに1.6をインストールし、使用している。突然、1.6の使用が断たれたようだ。
.bashrc に svnへのパスを記述すれば良いとあちらこちらに書いてあるが、もちろん、そうなっている。以前から変更もしていない。

アクセスは「svn+ssh」を用いていて、sshがsvnserveを稼働させるようにしてある。
そこで、authorized_keyに

command=”/path/to/svnserve -t” シェルアクセスとは別の公開鍵の記述

を追加し、ホームディレクトリに設置してあるsvnserve 1.6 で稼働することを明示した。

クライアントはMacOSXである。クライアント側の.bashrcに $SVN_SSH 環境変数を下記のようにセットした

export SVN_SSH=”ssh -i /path/to/svn_rsa”

svn_rsa はssh-keygenで作成した秘密鍵のファイルである。シェルのアクセスと同じ鍵にすると、シェルアクセスがsvnserveを稼働させてしまいコントロールできなくなる。なので、別の鍵のセットを作成する必要があった。

あと、確実に秘密鍵を参照しにいくように、~/user_name/.ssh/configというファイルを作成し、そこに下記のように記述した。

IdentitiesOnly yes

この記述がないと、ssh-agentがサーバーに対し、1つの鍵を保持し、それを使いまわすようだ。シェルとsvnserveで鍵を使い分けができなくなり、不便な状態が続いてしまう。

これで、シェルによる、svnserveへのアクセスは可能になった。しかし、svnXというアプリケーションはこれでもformatのエラーをはく。.bashrcを認識しない模様。

そこで、~./subversion/configの[tunnel]のセクションに下記のように追加した。
ssh = $SVN_SSH ssh -i /path/to/svn_rsa -q
これで、svnXも使える様になった。最後の-qは「Killed by signal 15.」の非表示のための対処である。