- ベストアンサー
SVNコミットエラーの解決方法と対策
- linux(Ubuntu)でSubVersionサーバを構築し、初回コミットをしたところエラーが発生しました。
- 記事(http://a98.jugem.jp/?eid=222)を参考に試したが解決しない。
- 有識者の方、ご教授のほど宜しくお願い致します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
ああ、あとubuntuのバージョンは明記したほうがよいかと。 「ubuntu svn サーバ」で検索すると http://d.hatena.ne.jp/kslash/20071122/1195741209 とか見つかります。 # dav_svn.confの編集内容見る限り、こちらを参照されたのかも知れませんが。 # 認証用のファイル無くてもフルアクセスできる…んですねぇ……。 >Subversionを使う上で、この辺のファイルを直接いじることはまずない。 とか書かれていますが、HTTPプロトコルでリポジトリにアセスする場合(とfile://でアクセスする場合)は編集不要ですが、 svnプロトコル(ssh+svnプロトコル)でアクセスする場合は編集が必要です。 >svn: PROPFIND (URL: '/repos/snavi'): 301 Moved Permanently (http://localhost) に関しては、掲示されたURLにあるとおりですな。 SVNリポジトリのディレクトリは、普通のHTTPリクエストでたどれる場所(今回の場合は/repos/~でアクセスできちゃう)に置いてはダメ…ということです。 http://d.hatena.ne.jp/GreenTea2010/20110520/1305915173 どっちかというとこっちの方が参考になるかと思われます。 認証用のファイルの作成についても説明されていますし。 >sudo htpasswd -c /etc/apache2/dav_svn.passwd (ユーザー名) は最初に作成するときだけで、ユーザを追加するときは「-c」は不要ですのでご注意を。
その他の回答 (1)
- Wr5
- ベストアンサー率53% (2173/4061)
妙な構築の仕方していますねぇ……。 >$ls -la /opt/lampp/htdocs >lrwxrwxrwx 1 www-data www-data 9 2012-10-04 22:28 repos -> /home/svn で、/home/svnには… >cd /home/svn/ >svnadmin create snavi により「snaviリポジトリ」(ブランチではありません)があるんですよね? で、その/home/svn/snaviの中身を >svn import /home/svn/snavi/ http://localhost:80/repos/snavi -m "test commit" でインポートしたい。と。 /home/svn/snaviにあるのがリポジトリに入れたい中身で、 http://localhost:80/repos/snaviに……(つまり/home/svn/snaviの中に)入れたい…と。 http://localhost:80/repos/snaviに入れると/home/svn/snaviの中が更新され、更新された内容をリポジトリに入れる処理を行うと結果として/home/svn/snaviが更新され、 その変更をリポジトリに適用すると結果として/home/svn/snaviが更新され、 さらにその変更をリポジトリに適用すると結果として/home/svn/snaviが更新され、 またまたさらにその変更をリポジトリに適用すると結果として/home/svn/snaviが更新され(以下略)って循環してませんか? と、まぁ実際にはそういう動作はしませんかね。 SVNリポジトリとして動作できるのは ><Location /svn> >DAV svn >SVNParentPath /home/svn/ ></Location> により、localhost/svn/~の時だけです。 localhost/repos/snaviでアクセスできるのはリポジトリの「中身の管理用ファイルとディレクトリ」であって、リポジトリではありません。 そんなワケでsvnコマンドがHTTPプロトコルを利用して発行するコマンドに応答されませんので、SVNリポジトリとしては使えません。 それが… >svn: PROPFIND リクエスト (相手: '/repos/snavi') が失敗しました ってエラーです。 その上で…… ・リポジトリ元のディレクトリはドコに置きたいのか。 ・HTTPでリポジトリにアクセスする時のURLはどういう形式にしたいのか。 を決めないとならないでしょう。 ちなみに、今の設定でもhttp://localhost/svn/snaviでアクセスできるかと思われます。 svn info http://localhost/svn/snavi でUUIDやリビジョン(0だと思いますが)は確認できるかと。 コミットはたぶんできませんけどね。 # 認証用の情報がありませんし。 インポート元のファイルがある場所とリポジトリのあるディレクトリをごっちゃにするのもよろしくありません。 # あと…チェックアウトしたワーキングコピーとインポート元・リポジトリのディレクトリをごっちゃにしないように。
お礼
毎日向き合っていたのですが、諸々煮詰まってしまい更新が遅れてすみません。 ご指摘のように、やりたい事が迷走していたので整理してみました。 やりたいこと-------- [リポジトリ]/home/svn/repos [ブランチ ]/home/svn/repos/snavi として、http://localhost/svn/repos/snavi へアクセスし、snaviブランチへのコミットを行いたい。 以下補足。 [webルート]/opt/lampp/htdocs/ [webサーバ]linux XAMPPパッケージに含まれるapache [Ubuntu]8.04 [VirtualBox]4.18 ---------------------- 以上を踏まえ、決定的にエラー原因を要約すると、 「svnへアクセスするプロトコルが例えhttpであっても、SVNの制約でapacheのドキュメントルート配下にSVNルートを配置する事が出来ない。したがって、apacheのドキュメントルート以外のパスにSVNルートを配置して、"WEB-DAV"でSVNルートにアクセスする必要がある」 「http://d.hatena.ne.jp/kslash/20071122/1195741209 を参考に導入を行ったが、SVNを外部へ公開するためのWEBサーバがXAMPPの様に参考URLとは別の場合には、WEB-DAVの設定を当該環境用に設定する必要がある。」 が今回のエラー原因であり、無事解決する事が出来ました! ※奇しくも後者のURLは他人の投稿ですがWr5さんのレスでしたね! >どっちかというとこっちの方が参考になるかと思われます。 >http://d.hatena.ne.jp/GreenTea2010/20110520/1305915173 こちらのレスで誤りに気付くことが出来ました。 本当にありがとうございました!