サーバーにSubversionとApacheをセットアップしました。
私のWebブラウザーから参照すると、正常に動作します( http://svn.Host.com/reposname )。ただし、自分のマシンでチェックアウトを実行すると、次のエラーが発生します。
Command: Checkout from http://svn.Host.com/reposname, revision HEAD, Fully recursive, Externals included
Error: Repository moved permanently to 'http://svn.Host.com/reposname/'; please relocate
Apacheのエラーログを確認しましたが、何も表示されません。 (今はあります-編集を参照してください)
私のリポジトリは/ var/www/svn/repos /に保存されています
私のウェブサイトは/ var/www/vhosts/x/...に保存されています.
サブドメインのconfファイルは次のとおりです。
<Location />
DAV svn
SVNParentPath /var/www/svn/repos/
AuthType Basic
AuthName "Authorization Realm"
AuthUserFile /var/www/svn/auth/svn.htpasswd
Require valid-user
</Location>
認証は正常に機能します。
誰かがこれを引き起こしている可能性があることを知っていますか?
-編集
そこで、Apacheを再起動して(もう一度)再試行し、エラーメッセージが表示されましたが、実際には役に立ちません。誰かがそれが何を意味するのか考えていますか?
[Wed Mar 31 23:41:55 2010] [error] [client my.ip.he.re] Could not fetch resource information. [403, #0]
[Wed Mar 31 23:41:55 2010] [error] [client my.ip.he.re] (2)No such file or directory: The URI does not contain the name of a repository. [403, #190001]
-編集2
私が行った場合 svn info
便利なものは何もありません。
[root@server domain.com]# svn info http://svn.domain.com/repos/
Username: username
Password for 'username':
svn: Repository moved permanently to 'http://svn.domain.com/repos/'; please relocate
ローカルチェックアウト(svn checkout file:///var/www/svn/repos/reposname
)そしてそれはうまくいきます(追加/コミットもうまくいきます)。したがって、Apacheと関係があるようです。
その他の情報:
-編集3
リポジトリを移動してみましたが、違いはありませんでした。
selinuxが無効になっているため、そうではありません。
私は最近これを持っていました...しかし、私はURLを忘れていたことがわかりました:)
あなたがしなければならない一つのことは、あなたのsvn LocationがApacheが提供するウェブサイトと重複しないことを確実にすることです。つまり、DocumentRootを/ wwwに設定し、svn Locationを/ www/svnに設定した場合、問題が発生します-Apacheは何が提供されるかを認識しません(つまり、svn特殊ハンドラー) 、またはストレートhttpハンドラー)。
これに関するFAQエントリ を参照してください。
チェックアウトしてみてくださいhttp://svn.Host.com/reposname/
(末尾のスラッシュに注意してください)。
このWebを確認してください: http://www.rkrishardy.com/2009/12/Subversion-fix-svn-copy-causes-repository-moved-permanentl/
おそらく、エイリアスは設定されたものと同じ場所を指すdav_svn.modであり、リポジトリにアクセスしている間、Apacheとdav_svnの間に競合状態があります。
提供された記事でよりよく説明されています
Dav_svn.conf内:
<Location /svn> #Alias we are talking about
DAV svn
Apache_site.conf内
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerAdmin webmaster@localhost
ServerName svn.za11.pl
#Alias /svn "/mnt/nfs/svn/" ###Comment out or change this alias
DocumentRoot /mnt/nfs/svn/
<Directory /mnt/nfs/svn/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /etc/Apache2/dav_svn.passwd
Require valid-user
</Directory>
... rest of the file
これは古いことはわかっていますが、同じ問題があったため、Googleで見つけました。コンピューターまたはサーバーのファイアウォールによってポート7080がブロックされていないことを確認してください
私のリポジトリはsvn.mydomain.com/sites/
にリポジトリがあり、vhostにDocumentRootおよびLocationブロックがありました。 documentrootを削除すると、この問題は解決しました。
RPMベースのSubversionとApacheがインストールされているFC14マシンで、Apacheが提供するhtmlツリーの下に誤ってリポジトリを配置すると、このエラーが発生しました。
SVNParentPath(/etc/httpd/conf.d/Subversion.conf内)は、DocumentRootの外のディレクトリを指す必要があります。
私はリポジトリを移動しましたが、問題は解消しました。
お役に立てれば。
恒久的に引っ越しましたか? HTTPFoxなどの何かをして、Apacheがリポジトリに適切なステータスコードを提供していることを確認できますか(200/OK
)。ステータスコード301
は、「完全に移動した」URLに対応し、svnクライアントが参照しているURLのように聞こえます。
たぶん会話が少し遅れるかもしれませんが、Apache構成でエイリアスを使用して末尾の「/」を処理するときにこれを確認します。エイリアス/ svn/path/to/svn /
また、エイリアスディレクティブがsvnリポジトリの場所にマップされていないことを確認する必要もあります。私が持っていたときに私はこれを最近持っていました
Alias /svn /var/lib/svn
<Location /svn>
...
</Location>
ここで、エイリアスとロケーションディレクティブは同じパスに適用されます。
チェックアウト時ではなく、COMMITが行われたときに同様の問題が発生しました。
理由?このフォルダー "obj\Debug\TempPE"。フォルダー "TempPE"がリポジトリーにコミットできないという奇妙な理由があります。
解決策?...プロジェクトの他のすべてのフォルダを1つずつコミットし、その場所をSVNサーバーから削除します
あなたはやっていないようですsvn checkout
、 むしろ svn update
既存のリポジトリ(?)内。
もしそうなら、これを行います:
svn switch --relocate http://svn.Host.com/reponame