はじめましてr_koikeです。
今日はTortoiseSVNのSubversionで悩んでいたネタです。
TortoiseSVNのsubversion設定を変えようとして、ファイル(configやservers)を編集したのに、subversionに変更内容が反映されない!
という状況に陥ったことはありませんか?
結論は、
Documents and Settingsにあるsubversion(TortoiseSVN)の設定ファイルだけでなく、レジストリも見ろ。
です。
以下、苦闘の記録です。
まぁ、私とまったく同じ状況でハマることは滅多にない(※)かと思います。
※ただ、TortoiseSVNがレジストリ・設定ファイルのどこを見ているか?という話になりますので、TortoiseSVNの設定関連で困っている人は参考になるかもしれません。
ディノではSubversionリポジトリにアクセスするためにはSSL証明書が必要です。
しかし、証明書の期限が切れてしまったため、この前新しい証明書を発行してもらいました。
前の証明書はパスフレーズ不要でしたが、新しい証明書はパスフレーズ付きなので、、
リポジトリにアクセスする際に証明書のパスフレーズを要求するウィンドウがでるようになりました。

毎回パスフレーズを入力するのは面倒なので、『認証を保存(S)』にチェックを入れました。しかし、パスフレーズが保存されていないのか、アクセスの度にパスフレーズを要求されます。
linuxなどでは HOME/.subversion/servers に設定すればパスフレーズを自動入力してくれますので、TortoiseSVNでも同じことができないか設定ファイルを探しました。
TortoiseSVNの設定画面を見るとSubversionの設定ファイルを編集ボタンがあり、設定ファイルを編集できます。

ここでは C:\Documents and Settings\UserName\Application Data\Subversion\config というファイルを編集しています。
同じディレクトリに C:\Documents and Settings\UserName\Application Data\Subversion\servers がありましたので、そのファイルに以下の設定を追加しました。
ssl-client-cert-file = C:/path/to/certfile ssl-client-cert-password = password
設定を追加してみたあとに、リポジトリにアクセスしましたが、まだパスフレーズを要求されます。
Subversion によるバージョン管理を見ると、Windows版では設定をレジストリに保存することもできるようです。…が、TortoiseSVNがどちらの設定を使っているか分かりません。
とりあえず、subversionという文字列を元にレジストリを検索すると
HKEY_CURRENT_USER\Software\tigris.org\Subversion\Servers\(グループ名/ドメイン名)
というキーがあったので、以下の値をレジストリへ設定しました。
ssl-client-cert-password = password
レジストリ書き換え後、すぐにTortoiseSVNへ反映されるようです。
アクセスの際にパスフレーズが要求されない(自動入力された)ことを確認しました。
レジストリの設定について何か書いていないか、Subversion によるバージョン管理をもう一度チェックしなおしてみると、以下のように書いてあります。
レジストリベースの設定オプションは、ファイルベースの残りの部分を検索する前に 検索されます。それで、このようなオプションは、設定ファイル中で見つかった値によって上書きされます。言い換えると、設定のプライオリティは Windowsシステムの場合、以下の順序となることが保証されています:
1.コマンドラインオプション
2.ユーザごとのINIファイル
3.ユーザごとのレジストリ値
4.システム全体のINIファイル
5.システム全体のレジストリ値
INIファイルがDocuments and Settingsにある設定ファイルだと思いますが、レジストリよりINIファイルを優先するとなっています。一応、英語版の方も確認してみます。
1.Command-line options
2.The per-user INI files
3.The per-user Registry values
4.The system-wide INI files
5.The system-wide Registry values
同じですね。
ここからは私の予想なのですが、HKEY_CURRENT_USER\Software\tigris.org\Subversion\ の設定が “3.ユーザごとのレジストリ値” にあたり、C:\Documents and Settings\UserName\Application Data\Subversion\ の設定ファイルが” 4.システム全体のINIファイル” にあたるのでしょうか。
Documents and Settingsのユーザディレクトリ以下にあるファイルなのに”システム全体”扱いなのが謎(※)です。
※Administratorユーザで実行しているからかもしれません。




コメント / トラックバック 1 件
自分の旧証明書はパスワードつきでしたが、新証明書に差し替えたことで同じ症状になりました。証明書のファイルパスを記憶させるときであればパスワードも一緒に覚えてくれますので、新証明書のファイルパスを変えることで運用回避できます。
根本解決ではありませんが……。
コメントする