SVNコミットエラーの解決方法と対策

このQ&Aのポイント
  • linux(Ubuntu)でSubVersionサーバを構築し、初回コミットをしたところエラーが発生しました。
  • 記事(http://a98.jugem.jp/?eid=222)を参考に試したが解決しない。
  • 有識者の方、ご教授のほど宜しくお願い致します。
回答を見る
  • ベストアンサー

SVNコミットエラー

linux(Ubuntu)でSubVersionサーバを構築したのですが、 初回コミットをしたところエラーが出てしまいました。 エラー-------- svn import /home/svn/snavi/ http://localhost:80/repos/snavi -m "test commit" svn: PROPFIND リクエスト (相手: '/repos/snavi') が失敗しました svn: PROPFIND (URL: '/repos/snavi'): 301 Moved Permanently (http://localhost) -------------- この辺の記事(http://a98.jugem.jp/?eid=222)を参考に 色々試してみたのですが、解決できません。 apacheは起動しており、FireFoxからはテスト用HTML http://localhost/repos/snavi/test.html は参照出来ていますが、 http://localhost/repos/snavi/ へのチェックインが出来ないのです。 SVNのルート設定は以下で、 [svn設定]--- (/etc/apache2/mods-enabled/dav_svn.conf) <Location /svn> DAV svn SVNParentPath /home/svn/ </Location> ------------------------------------------- http://localhost:80/repos はSVNルートへのシンボリックリンクです。 [web(apache)設定]---------------- (ドキュメントルート) http://localhost → /opt/lampp/htdocs (シンボリックリンク) $ls -la /opt/lampp/htdocs lrwxrwxrwx 1 www-data www-data 9 2012-10-04 22:28 repos -> /home/svn ------------------------------------------- SVNルート以下には ------------------------------------------ cd /home/svn/ svnadmin create snavi ------------------------------------------ のようにsnaviブランチを作成したのですが、 やはりhttp://localhost/repos/snavi/ へのチェックインが出来ません。 有識者の方、いらっしゃいましたらどうか ご教授のほど宜しくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wr5
  • ベストアンサー率53% (2177/4070)
回答No.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」は不要ですのでご注意を。

HYSTER
質問者

お礼

毎日向き合っていたのですが、諸々煮詰まってしまい更新が遅れてすみません。 ご指摘のように、やりたい事が迷走していたので整理してみました。 やりたいこと-------- [リポジトリ]/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 こちらのレスで誤りに気付くことが出来ました。 本当にありがとうございました!

その他の回答 (1)

  • Wr5
  • ベストアンサー率53% (2177/4070)
回答No.1

妙な構築の仕方していますねぇ……。 >$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だと思いますが)は確認できるかと。 コミットはたぶんできませんけどね。 # 認証用の情報がありませんし。 インポート元のファイルがある場所とリポジトリのあるディレクトリをごっちゃにするのもよろしくありません。 # あと…チェックアウトしたワーキングコピーとインポート元・リポジトリのディレクトリをごっちゃにしないように。

関連するQ&A

  • Subversionでエラー

    Subversionで 「svn: リポジトリは恒久的に 'http://localhost/svn/4514/' へ移動しました。relocate (参照 URL の変更) を実行してください」 というエラーが発生します。 OSはUbuntu 11.10です。LAMPP(XAMPP)を使っています。 Subversion自体は正常にインストールできたようです。 Subversion自体は/home/username/svnの下ではちゃんとaddとcommitが動きました。 設定には↓のサイトを参考にしました。 http://blog.riywo.com/2008/04/01/054421 ただ、それをhttp://localhost/svn/4514/の下でブラウザから動かしたいんです。 /opt/lampp/etc/httpd.confには DocumentRoot "/opt/lampp/htdocs" としてあります。ですから、/opt/lampp/htdocsがlocalhostです。 /opt/lampp/htdocs/svn/ というディレクトリを作成し、その下で sudo svnadmin create 4514 sudo chown -R www-data.www-data 4514/ sudo chmod 777 4514/ を実行しました。 http://localhost/svn/4514/にはブラウザから問題なくアクセスでき、ファイルの内容を見ることができます。 sudo vim /etc/apache2/mods-enabled/dav_svn.conf で以下のように編集しました: <location /svn> DAV svn # SVNParentPath "/home/username/svn" ←これがadd/commitが動いたディレクトリです SVNParentPath "/opt/lampp/htdocs/svn" # SVNParentPath "/opt/lampp/htdocs/svnrepository" </location> /home/username/sagyou/source の下には"Hello World!"と書かれたfirst.txtというファイルが作ってあります。 これで svn import ~/sagyou/source http://localhost/svn/4514/ -m "first import" と実行すれば、/4514の下に~/sagyou/source/first.txtがコピーされるはずなんですが、 「svn: リポジトリは恒久的に 'http://localhost/svn/4514/' へ移動しました。relocate (参照 URL の変更) を実行してください」 というエラーが発生します。 このエラーに関するサイトを10個は読んだのですが、まったく意味が分かりません(具体的な例が分かりません)。特に↓ここです: http://www.hinet.mydns.jp/tdiary/?date=20050317#p02 SVNParentPath "/opt/lampp/htdocs/svnrepository"に変えてみても同じです。 ちなみに、DocumentRootは変えたくありません、既にその下にPHPのファイルなどを入れているからです。 もう昨日からずっとやっているのに解決できません。でも、あと一歩のような気がします。必要であれば補足します。試してほしい操作があればやります。どんな小さなヒントでもいいので、どうかお助けください。お願いします。

  • httpd.confでのsvn設定でAuthzSVNAccessFileが指定できない

    こんにちは。ただいまWindowsXPでsvn(Subversion)サーバの設定を行っている者です。apacheのhttpd.confファイルにsvnの設定として以下のように設定しています。 <Location /svn> DAV svn SVNParentPath "C:\svn_repos" SVNListParentPath on AuthType Digest   AuthDigestProvider file AuthName "SVN Repositry" AuthUserFile "C:\Program Files\Apache Software Foundation\Apache2.2\svn_digest\.htpass_dig" Require valid-user AuthzSVNAccessFile "C:\svn_repos\repos\conf\authz" </Location> この状態でhttp://localhost/svn/とウェブアクセスすると、必ずapacheに問題が発生してアクセスできなくなります。 エラーの内容は以下の通り szAppName : httpd.exe szAppVer : 2.2.11.0 szModName : mod_dav_svn.so szModVer : 1.6.1.37116 offset : 00005e53 ちなみにAuthzSVNAccessFile "C:\svn_repos\repos\conf\authz"の1行を削除すればサーバが落ちることはなくなります。authzファイルの中身は以下の通り [groups] group1 = name1,name2 [/] @group1 = rw [repos:/] @group1 = rw いろんなサイトを検索しても全くこの症状で同様の悩みを訴えている人がいなかったので、わらにもすがる思いでここに質問しました・・・。どなたか、原因と対策を教えていただけないでしょうか。お願いします。 apacheのバージョン2.2.11 svnのバージョン1.6.1 です。

  • apache svnの設定で変数を利用したい

    $USER_NAMEをユーザー名として、 以下のような設定をするのはどうすればいいですか? <Location $USER_NAME> DAV svn SVN ParentPath /home/$USER_NAME/svn AuthType Basic AuthName "Subversion repository" AuthUserFile /home/$USER_NAME/.htpasswd Require valid-user </Location> (もちろんこれでは動きません) つまり http://www.example.com/user1/repo1 http://www.example.com/user1/repo2 http://www.example.com/user2/repos21 http://www.example.com/user2/repos22 のように動的に設定したいのですが、可能でしょうか。

  • XAMPP:SVNでロックできない

    SVNサーバ(Apache経由)を従来Linuxで立ててましたが、Windows側に引っ越す事になりました。 OS:WinXP XAMPP1.7.7 を導入し、SVN1.7.2を導入しました。 普通にHTTP越しにSVNを利用する事は可能になったのですが、ロック機能が使えません。 エラー: Lock request failed: 400 Bad Request (http://url) が表示されます。 サーバのWindows上で、リポジトリダイレクトアクセス(file://)ではロックできました。 Apacheのエラーログに [Tue Feb 14 12:16:46 2012] [error] [client IP-addr] Tried to attach multiple locks to a resource. [400, #405] というログが出てました。 ぐぐると、英文文献が出てくるのですが、いまひとつ理解できませんでした。 Apacheのアクセスログを見ると IP-addr - - [14/Feb/2012:12:16:46 +0900] "LOCK /svn/filename HTTP/1.1" 400 1085 "-" "SVN/1.4.5 (r25188) neon/0.26.3" となっていました。 Linuxのアクセスログを見ると、LOCKリクエストの時でも IP-addr - username [17/Aug/2011:20:07:10 +0900] "LOCK 以降省略 みたいに、アカウント情報がのってました。 これが原因かな?と思ったのですが、どうやってユーザ情報をのせればいいのかわからないです。 HTTP.CONF のSVNの設定は、以下のような設定です。 何か忘れ物をしているのかどうか、よくわからないのですが、 ロックができずに困っている文献が少なく?困りました。 とっかかりでもなんでもいいので、ヒントがありましたらよろしくお願いします。 <Location /svn> DAV svn SVNParentPath "D:/home/svn/" AuthType Basic AuthName "Subversion Repository" AuthUserFile "D:/home/svn/dav_svn.passwd" Require valid-user <LimitExcept GET PROPFIND OPTIONS REPORT> Require valid-user </LimitExcept> </Location>

  • Subvirsion サーバに接続できません。

    お世話になります。 Subvirsionサーバ(1.7.5)を構築中です。 クライアントとしてTortoiseSVN(1.7)を使っております。 リポジトリブラウザからURLに、 「http://myhost/svn/test/」 を指定し認証ログインを行った後、 「Ridicect cycle detected for URL 'http://myhost/svn/test' 」 というメッセージが出て、リポジトリを表示できません。 リダイレクトが循環している、というような意味のメッセージだと思うのですが、 以下【httpd.cnfの内容】を見ても、 循環が発生しているように見えず、お手上げです。 ブラウザ(IE)から同じURLでアクセスすると、 設定どおりにリダイレクトされ、リポジトリが表示されます。 【httpd.cnfの内容】 Alias /svn "C:\Apache2.2.22/htdocs/Repositories" <Location /svn/> DAV svn SVNListParentPath on SVNPathAuthz off SVNParentPath "C:/Apache2.2.22/htdocs/Repositories/" SVNPathAuthz short_circuit SVNCacheTextDeltas off SVNCacheFullTexts off AuthzSVNAccessFile "C:/Apache2.2.22/htdocs/Repositories/authz" AuthName "Subversion Server " AuthType Basic AuthBasicProvider file AuthUserFile "C:/Apache2.2.22/conf/.htpasswd" Require valid-user ExpiresActive on ExpiresDefault access </Location> Apacheのログには、以下の4つが出ていました。 "OPTIONS / HTTP/1.1" 200 - "OPTIONS /svn HTTP/1.1" 301 233 "PROPFIND /svn HTTP/1.1" 301 233 "OPTIONS /svn HTTP/1.1" 301 233 "PROPFIND /svn HTTP/1.1" 301 233 以上、よろしくお願いします。

  • mod_dav_svnをインストール出来ません

    mod_davとmod_dav_fsをコンパイルし、httpd.confを編集し <Location /svn> DAV svn SVNPath /var/lib/svn/repository/ </Location> としたところ、「Unknown DAV provider: svn」とエラーと出ました。 自分はcentOS5.5でApache2.2はソースから、Subversionはyumからインストールしました。 よってyumからinstallでは駄目なんじゃないかと思い、で、mod_dav_svn.soをいつものようにapxs等でソースからインストールしようと思ったのですが、web上で全く情報が無く全部yumからのインストールでした。 1時間くらい探しまわったのですが、仕方が無く yum istall mod_dav_svn を行いましたが当たり前ですが、/usr/local/apache2/modules/内には存在しませんでした。 で、/etc/httpd/modules/内のmod_dav_svn.soを使おうと思いhttpd.confに LoadModule dav_svn_module /etc/httpd/modules/mod_dav_svn.so を追記した所、 「httpd: Syntax error on line 60 of /usr/local/apache2/conf/httpd.conf: Cannot load /etc/httpd/modules/mod_dav_svn.so into server: /usr/lib/libsvn_fs_base-1.so.0: undefined symbol: db_create」とエラーが出ました。 どのようにしたらmod_dav_svnをインストール出来るのでしょうか? 自分としては、yumではなくソースからコンパイルしたいと思っております。 無理であればyumからでもいいのですが、その場合どのようにすればうまくいくのでしょうか?

  • Apacheの設定で、別ドライブの設定方法は?

    httpd.confの設定で、C:ドライブにWeb関係の設定をし、E:ドライブにSVNのフォルダーを作って行いたいと思っています。 同じCドライブでは、SVNのテストは上手くいきました。 それを、Eドライブにすると、Apacheが落ちてしまいます。 httpd.confの設定で、別ドライブを認識させる方法は、どこにありますか? WindowsのApacheでは、別ドライブの設定をすることは出来ないのでしょうか? Apacheは、Cドライブにインストールしています。 設定の抜粋は以下のとおり <Directory "E:/svn"> AllowOverride All #Options Indexes SymLinksIfOwnerMatch IncludesNoExec </Directory>    : <Location /svn> DAV svn SVNListParentPath on SVNParentPath E:\svn </Location>

  • WebDAVの設定について

    お世話になっております。 Windows7+Apache2.2で、 PC内に、dav.example.comというサイトを立ち上げて、 WebDAVの設定を勉強中です。 同じPCのWindowsエクスプローラのネットワーク接続で、 http://dav.example.com/dav だと接続できるのですが、 https://dav.example.com/dav だと接続できません。 Apacheのログからは、以下のとおり401ではじかれています。 192.168.95.131 - - [12/May/2017:21:28:20 +0900] "OPTIONS / HTTP/1.1" 200 - 192.168.95.131 - - [12/May/2017:21:28:20 +0900] "PROPFIND /dav HTTP/1.1" 401 401 以下、httpd.confのVertualHostの部分です。 80のWebDAV設定をそのまま443にコピーしているのですが、うまくいきません。 WebDAVに詳しい方、解決のヒントでもいただければ助かります。 Listen 80 NameVirtualHost *:80 <VirtualHost *:80> ServerName dav.example.com:80 DocumentRoot "C:/Apache2.2/htdocs_example" ErrorLog "C:\Apache2.2\logs\example\error.log" TransferLog "C:\Apache2.2\logs\example\access.log" <IfModule mod_dav_fs.c> DavLockDB logs/DavLock </IfModule> Alias /dav "C:\Apache2.2\htdocs_example\webDAV" <IfModule mod_dav.c> DAVMinTimeout 600 <Location /dav> DAV On AuthType Digest AuthName "DAV" AuthUserFile "C:\Apache2.2\conf\.htdigest" Require valid-user Order deny,allow Allow from all </Location> </IfModule> </VirtualHost> AddType application/x-x509-ca-cert .crt AddType application/x-pkcs7-crl .crl SSLPassPhraseDialog exec:C:\Apache2.2\conf\extra\ssl_pass.bat SSLSessionCache "shmcb:C:/Apache2.2/logs/ssl_scache(512000)" SSLSessionCacheTimeout 300 SSLMutex default Listen 443 NameVirtualHost *:443 <VirtualHost *:443> ServerName dav.example.com:80 DocumentRoot "C:/Apache2.2/htdocs_example" ErrorLog "C:\Apache2.2\logs\example\error.log" TransferLog "C:\Apache2.2\logs\example\access.log" <IfModule mod_dav_fs.c> DavLockDB logs/DavLock </IfModule> Alias /dav "C:\Apache2.2\htdocs_example\webDAV" <IfModule mod_dav.c> DAVMinTimeout 600 <Location /dav> DAV On AuthType Digest AuthName "DAV" AuthUserFile "C:\Apache2.2\conf\.htdigest" Require valid-user Order deny,allow Allow from all </Location> </IfModule> Include conf/extra/ssl/ssl-dav.example.conf </VirtualHost> 以上です。 よろしくお願いします。

  • eclipseでtracを使おうとしたらエラー

    http://www.atmarkit.co.jp/fjava/rensai4/devtool02/devtool02_2.html 現在、このURL通りにtrac,eclipseをインストールしたところです。 そして、このサイトの図6の新規リポジトリ・ロケーションのURL欄に次の情報を入力しました。 URL:http://localhost/trac/test (プロジェクトは、tracコマンドプロンプトのcreate-project.batコマンドで作成しています。) そして終了ボタンを押すと、以下のエラーが表示されます。 svn: PROPFIND of '/trac/test': 200 OK (http:localhost) このエラーのせいで次のステップへ進むことができていません。 お分かりになる方がいれば回答願います。

  • SVNのリポジトリをNASに。

    こんばんわ。 CentOSにSVN(httpでアクセス)をインストールして、リポジトリはNASにということをやってみたくていろいろ実験しているのですが上手くいきません。 $ sudo mkdir /var/www/svn として作ったディレクトリを $ sudo mount -t nfs <NASのIPアドレス>:/svn /var/www/svn 上記のようにマウントしてみました。 マウントした先は読み書きできます。 次にリポジトリを $ sudo svnadmin create /var/www/svn/test と作成し、 $ sudo chown -R apache:apache /var/www/svn 一応再起動。 $ sudo /etc/init.d/httpd restart リポジトリが作成できたので、 http://<SVNのIPアドレス>/svn/test/ とすると HTTP 500 が帰って来ます。 ログを見ると、 (20014)Internal error: Can't open file '/var/www/svn/test/format': Permission denied Could not fetch resource information. [500, #0] Could not open the requested SVN filesystem [500, #13] Could not open the requested SVN filesystem [500, #13] と出ています。内容からするとパーミッション関係だと推測できます。 上記の問題を解決するにはどのような設定をすればよろしいのでしようか。

専門家に質問してみよう