以前は OS X Leopard で SVN 1.4 を使用していましたが、すべて問題ありませんでした。数週間前、私は OS X 10.6 の新しいコピーをインストールしました。Snow Leopard に付属する SVN のバージョンは 1.6.5 です。先に進み、1.6.6 で独自のコピーを作成しました。私は組み込みのApacheサーバーを使用しており、リポジトリをローカルでホストしています。
実際に何かをコミットしようとするまで、すべてが正常に機能しているように見えました。変更をコミットしようとするたびに、次のメッセージが表示されます。
Transmitting file data .svn: Commit failed (details follow):
svn: MERGE of '/svn/svn2': 409 Conflict (http://localhost)
これは古いリポジトリで発生するため、いくつかの新しいリポジトリを作成しました。同じ取引。また、システムに付属の 1.6.5 バージョンを使用してみました... 同じです。最後に、最新の安定した SVN (1.6.9) にアップグレードしようとしましたが、それでも同じ問題が発生しました。
Apache エラーは、失敗したコミットごとに次のログを記録します。
[Mon Mar 29 19:53:10 2010] [error] [client ::1] Could not MERGE resource "/svn/svn2/!svn/act/d399326f-c20f-424f-bb68-3bb40503b5b1" into "/svn/svn2". [409, #0]
[Mon Mar 29 19:53:10 2010] [error] [client ::1] An error occurred while committing the transaction. [409, #2]
[Mon Mar 29 19:53:10 2010] [error] [client ::1] Can't open directory '/usr/local/svn/svn2/db/transactions/5-6.txn/\xeb\xa9\x0f\x1f': No such file or directory [409, #2]
[Mon Mar 29 19:53:11 2010] [error] [client ::1] Could not DELETE /svn/svn2/!svn/act/d399326f-c20f-424f-bb68-3bb40503b5b1. [500, #0]
[Mon Mar 29 19:53:11 2010] [error] [client ::1] could not open transaction. [500, #2]
[Mon Mar 29 19:53:11 2010] [error] [client ::1] Can't open file '/usr/local/svn/svn2/db/transactions/5-6.txn/props': No such file or directory [500, #2]
そしてアクセスログから:
::1 - - [30/Mar/2010:13:02:20 -0400] "OPTIONS /svn/svn2 HTTP/1.1" 401 401
::1 - user [30/Mar/2010:13:02:20 -0400] "OPTIONS /svn/svn2 HTTP/1.1" 200 188
::1 - user [30/Mar/2010:13:02:20 -0400] "PROPFIND /svn/svn2 HTTP/1.1" 207 647
::1 - user [30/Mar/2010:13:02:20 -0400] "PROPFIND /svn/svn2 HTTP/1.1" 207 647
::1 - user [30/Mar/2010:13:02:20 -0400] "PROPFIND /svn/svn2/!svn/vcc/default HTTP/1.1" 207 398
::1 - user [30/Mar/2010:13:02:20 -0400] "PROPFIND /svn/svn2/!svn/bln/6 HTTP/1.1" 207 449
::1 - user [30/Mar/2010:13:02:20 -0400] "REPORT /svn/svn2/!svn/vcc/default HTTP/1.1" 200 1172
奇妙なことに、コミットは実際に変更をコミットしますが、作業コピーはそれを認識せず、すべてがおかしなことになります。
この問題について考えられるすべてのバリエーションを Google で検索しようとしましたが、検索結果はほとんど役に立ちません。私は TortoiseSVN や特別なものを使用しておらず、コミットは新しいリポジトリで失敗するため、古いリポジトリでは問題がないことがわかっています。
どんな助けでも大歓迎です。
更新
svn.conf ファイルに autoversioning を追加しようとしました。これが私のファイルの内容です:
LoadModule dav_svn_module /usr/libexec/apache2/mod_dav_svn.so
<Location /svn>
DAV svn
SVNParentPath /usr/local/svn
SVNAutoversioning on
# how to authenticate a user
AuthType Basic
AuthName "Subversion repository"
AuthUserFile /usr/local/etc/svn-auth-file
# only authenticated users may access the repository
Require valid-user
</Location>
更新 (解決策)
他の誰かがまったく役に立たないエラーメッセージで同じ問題を抱えている場合に備えて、これを実際の解決策で更新したかっただけです. 問題は apr および apr-util 部分にありました (scherand が示唆したように)。サブバージョンの依存関係パッケージを使用して、両方のコピーを作成していました。OS X 10.6 には独自のバージョンもあります。どちらのバージョンも 1.3.8 でした。どうやら、デフォルトのApacheインストールが使用していたバージョンを使用する必要がありました。
そこで、自分の subversion ビルドから apr および apr-util フォルダーを削除して、これらの独自のコピーを再度ビルドしないようにしました。今回は次の構成を使用して、ソースから svn を再度ビルドしました。
./configure --with-apr=/usr/bin/ --with-apr-util=/usr/bin/ --with-ssl
再度ビルドした後、apache を再起動し、新しい svn リポジトリを作成しました。問題なくチェックアウトし、変更を加え、コミットすることができました。その後、古いリポジトリを試してみましたが、それらも同様に機能しました。
助けてくれてありがとう!