0

Apacheを介してアクセスするようにsvnリポジトリを構成しました。

これらのアドレスを使用して、任意の Web ブラウザーからアクセスできます。

http://svn.domain.com
http://www.domain.com:3690

しかし、Windows で tortoiseSVN を使用するか、Linux でコマンド ラインを使用してチェックアウトしようとすると、最初のものは「使用できない URI: このリポジトリを参照していません」を返し、2 番目のものは何時間も実行され、タイムアウト エラーで終了します。(同じことを行う svn://domain.com も試しました)

私は mod_rewrite がその問題の何かに役立つ可能性があることを読みましたが、mod_rewrite を削除する以外にその問題を解決する方法はありませんでした。

しかし、このサーバー上の Web サイトには mod_rewirte が必要です。

何が問題ですか?

mod_dav_svn と mod_rewrite を同時に実行する方法はありますか?

編集

仮想ホストの conf ファイルは次のようになります。

<Directory /path/to/subdomain>
  DAV svn
  SVNPath /path/to/repos
  AuthType Basic
  AuthName "Repos Name"
  AuthUserFile /path/to/auth-user/file
  Require valid-user
</Directory>

これを httpd.conf ファイルに追加しました。

Listen 3690
NameVirtualHost *:3690

<VirtualHost *:3690>
  ServerName svn.domain.com
  <Location />
    DAV svn
    AuthType Basic
    AuthName "Repos Name"
    AuthUserFile /path/to/auth-user/file
    SVNPath /path/to/repos
    Require valid-user
  </Location>
</VirtualHost>
4

2 に答える 2

0

わかりました、なぜ HTTP にポート 3690 を使用しているのですか?

Subversion は、リポジトリにアクセスするためにいくつかの異なるプロトコルを使用できます。ただし、組み合わせることはできません。サーバーとして Apache HTTP を使用している場合は、HTTP プロトコルのみを使用できます。

$ svn co http://svn.domain.com/<srvrInst>/path/to/your/repository

Apache では、通常、ドメインの後にサーバー インスタンスがあります。これは、複数のサーバー インスタンスが 1 つの Apache インスタンスに接続できるためです。ソースが使用されているのを見たことがありますが、ほとんどの場合、それは単にsvnです。これは、Apache HTTP 構成で構成されます。

基本的に、Web ブラウザーで参照できるディレクトリはすべて、チェックアウトできるようにする必要があります。ただし、身に着けている場合は例外ですSVNListParentPathすべてのリポジトリの親ディレクトリをチェックアウトできません。それ以外の場合は、参照できる任意のディレクトリをチェックアウトできます。

svnserve と Apache http を介して同時に同じリポジトリを提供することが可能です。その場合、Apachehttpプロトコルまたはプロトコルのいずれかを使用できsvnます。

これで問題が解決しない場合は、さらに情報を提供していただく必要があります。たとえば、Apache http 構成はどのように見えますか。ブラウジングはできるが、チェックアウトはできない URL は? Subversion では、ディレクトリのみをチェックアウトでき、ファイルはチェックアウトできないことに注意してください。ファイルが必要な場合は、ファイルを使用svn catして、出力をファイルにリダイレクトできます。


仮想ホストの conf ファイルは次のようになります。

<Directory /path/to/subdomain>
  DAV svn
  SVNPath /path/to/repos
  AuthType Basic
  AuthName "Repos Name"
  AuthUserFile /path/to/auth-user/file
  Require valid-user

あなたの問題は Directory ディレクティブ自体にあると思います。これは、リポジトリが配置されているドメインの下のディレクトリを指定することを想定しています。通常はsvnorのようなものなsourceので、これを checkout: $ svn co http://svn.domain.com/svn/repoorにし$ svn co http://svn.domain.com/source/repoます。URL のドメイン名のにある場所がわかりますか?

そのようなマルチレベルのディレクトリを試したことはありません。人々にチェックアウトを指定してもらいたいhttp://svn.domain.com/path/to/subdomain/repoですか? チェックアウト URL はすでにかなり長いので、さらにディレクトリを追加することは考えられません。

Web ブラウザー経由でリポジトリを参照できるとのことです。その場合、Web ブラウザからその URL を切り取り (ファイルではなくディレクトリである限り)、Tortoise または Subversion のコマンド ラインに貼り付けることができます。

ところで、AuthUserFile が設定されているようです。問題は、ユーザー名とパスワードを指定する必要があることでしょうか? ここでは、ポート 3690 でリッスンしている仮想ホストを除外します。本当にそのポートを使用したい場合はsvnserve、リポジトリ サーバーで実行し、人々にsnv://プロトコルを使用させます。

于 2012-09-10T17:31:42.220 に答える
0

ドメイン名をチェックアウトすることはできません。また、プロトコルを変更して、反対側のサーバーが突然その新しいプロトコルの通信を開始することを期待することもできません。

Web サイトが SVN サーバーに SVN リクエストを送信し、リクエストを HTML としてフォーマットしています。つまりhttp://svn.domain.com、SVN URL ではありません。SVN URL が何であるかを調べる必要があり、少なくともプロジェクト名が含まれます。protocol://server/projectname

mod_rewrite は、ある URL を別の URL に自動的に書き換える優れたツールです。ただし、この時点で mod_rewrite を使用すると、mod_dav_svn 構成の問題が、プログラムで URL を書き換えているレイヤーの下にのみ隠されます。最初の問題を修正せずに新しい問題 (URL の書き換えが壊れていますか?) を導入するため、その方法で修正するのははるかに困難です。

于 2012-09-10T15:47:49.163 に答える