Subversionエラー:リポジトリを完全に移動して再配置してください


23

サーバーにSubversionとApacheをセットアップしました。

私のウェブブラウザを介してそれを閲覧する場合、それは正常に動作します(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と関係があるようです。

その他の情報:

  • CentOs 5.3を実行しています
  • Plesk 9.3
  • Subversion、バージョン1.6.9(r901367)

-編集3

リポジトリを移動しようとしましたが、違いはありませんでした。

selinuxは無効になっているため、そうではありません。


1
なぜあなたはOptions +indexesそれが本当にsvnの場所で有用なことをするべきではないのですか?
ゾレダチェ

認証/許可に関係する何かを一時的に無効にしようとしましたか?
ゾレダチェ

すべてのリポジトリの概要を表示するようにしました(後で別のコマンドがあることがわかりました)。それを削除しました。私も認証を削除しましたが、何も解決しませんでした(Authは実際に正常に機能し、ユーザー名/パスワードを要求し、実際の組み合わせのみを受け入れます)。
バートS.

回答:


22

私は最近これを持っていました...しかし、私はURLを忘れていたことが判明しました:)

あなたがしなければならないことの一つは、あなたのsvnの場所がどのapache-servableウェブサイトとも重複しないことを確実にすることです。つまり、DocumentRootを/ wwwに設定し、svn Locationを/ www / svn ...に設定すると、問題が発生します。Apacheは、サービスの提供対象を認識できません(つまり、svn特別ハンドラー) 、または単純なhttpハンドラー)。

これに関するFAQエントリを参照してください


これは正しい答えかもしれませんが、これに関連する別の可能な投稿があります:forum.webfaction.com/viewtopic.php?id=2423
ポールクローン

1
うわー、私はすでにこれについて知っていましたが、もう一度試してみようと思いました。私は新しいリポジトリを作成しましたが、うまくいきました。これがなぜなのか混乱していたので、サーバーにFTP接続し、test(私のリポジトリと同じ)というサブドメイン(pleskによって作成された)のhttpdocsディレクトリにディレクトリがあることがわかりました。私はそれを削除しましたが、今では動作します。助けてくれてありがとう。
バートS.

1
1つの一般的なシナリオについて少し詳しく説明します。仮想ホストが設定されていて、ルートにSVNが必要な場合(例:svn.example.comはレポURLです)、「DocumentRoot / svn」を設定せず、VirtualHost内で「<Directory / svn>」ブロックを使用してルートパスのDAV svnオプションを構成します。これにより、DAVハンドラーとその内部ハンドラーの間でApacheが混乱するという問題が発生します。VirtualHostブロックにはDocumentRootディレクティブがありません。代わりに「<Location />」ブロックを使用して、ルートパスのDAV svnオプションを構成します。
ネズロイ

たとえば、configにAliasディレクティブをAlias svn /repositories設定してから、ですべてを設定しました<Location /svn/ >。問題はFAQリンクとまったく同じでしたが、不思議なことに、1か月間完全に機能し、水曜日の午後のお茶の時間に停止しました。リポジトリが「/」にある場合、DocumentRootディレクティブと重複します。
マットコノリー

完璧に機能しました!これはDocumentRootの問題でした!+1
Feiticeir0


2

この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

1
ここのリンクは死んでおり、おそらく代替品はありません。
sysadmin1138

//この回答を更新しますか?
ネイサンバサニーズ

1

私のvhostにはレポジトリでvhostセットアップsvn.mydomain.com/sites/ があり、DocumentRootとLocationブロックがありました。ドキュメントルートを削除することでこの問題は解決しました。


1

RPMベースのSubversionとApacheをインストールしたFC14マシンで、Apacheが提供するHTMLツリーの下に誤ってレポを置いたときにこのエラーが発生しました。

SVNParentPath(/etc/httpd/conf.d/subversion.conf内)は、DocumentRootの外部のディレクトリを指す必要があります。

リポジトリを移動すると、問題はなくなりました。

お役に立てれば。


1

これは古いことは知っていますが、同じ問題を抱えていたため、Googleで見つけました。ポート7080がコンピューターまたはサーバーのファイアウォールによってブロックされていないことを確認してください


0

あなたがやっていないように思えるsvn checkoutのではなく、svn update既存のリポジトリにあります(?)。

その場合、これを行います:

svn switch --relocate http://svn.host.com/reponame


いいえ、エラーメッセージに表示されているように、「コマンド:チェックアウト元...」というメッセージが表示されます。実際に新しいチェックアウトを試行しています。
バートS.

0

永久に移動しましたか?することができますHTTPFoxようなものか何かとApacheが(あるべきリポジトリのための右のステータスコードを配っていることを確認してください200/OK)。ステータスコード301は「永久に移動した」URLに対応し、svnクライアントが参照しているもののように聞こえると思います。


Firebugとwgetは両方とも200 OKを与えます。しかし、私が言ったように、ブラウザで(ネットサーフィンすることでhttp://svn.server.com/repos)ブラウズすると、うまく機能し、「レポ-リビジョン0:/」とすべてが得られます。この問題は、チェックアウトを行うときにのみ発生します。
バートS.

0

会話が少し遅れるかもしれませんが、Apacheの設定でエイリアスを使用して末尾の「/」を処理すると、このことがわかります。エイリアス/ svn / path / to / svn /


0

また、svnリポジトリの場所にAliasディレクティブがマッピングされていないことを確認する必要があります。私が持っていたとき、私は最近これを持っていました

Alias /svn /var/lib/svn
<Location /svn>
...
</Location>

ここで、エイリアスと場所のディレクティブは同じパスに適用されます。


0

チェックアウト時ではなく、コミットが行われたときに同様の問題が発生しました。

理由?このフォルダ「obj \ Debug \ TempPE」、奇妙な理由により、フォルダ「TempPE」はリポジトリにコミットできません。

ソリューション?...プロジェクトの他のすべてのフォルダーを1つずつコミットし、その場所をSVNサーバーから削除します

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.