問題は、Subversionリポジトリ(複数のリポジトリを持つことができます) が Apache でどのようにセットアップされているかです。
Apache では、Subversion リポジトリをセットアップする方法が 2 つあります。次のように、各リポジトリを個別に実行できます。
<Location /svn/repos>
DAV svn
SVNPath /path/to/repositories/repos
</Location>
<Location /svn/repos2>
DAV svn
SVNPath /path/to/repositories/repos2
</Location>
この場合、https://hostname/svn/repos
およびを介してこれらのリポジトリにアクセスできますhttp://hostname/svn/repos2
。
ご想像のとおり、大量のリポジトリがある場合、保守がかなり困難になる可能性があります。新しいリポジトリを作成するたびに、Apache 構成を更新する必要があります。50 ほどのリポジトリがある場合、構成ファイルが非常に長くなり、維持するのが難しくなります。
これを処理するために、Apache では、一連の Subversion リポジトリを 1 つの構成で構成できます。
<Location /svn/repo>
DAV svn
SVNParentPath /path/to/all/svn_repositories
</Location>
これで、リポジトリ/path/to/all/svn_repositories/proj_a
およびがある場合、および/path/to/all/svn_repositories/proj_b
を介してそれらにアクセスできます。http://myserver/svn/repo/proj_a
http://myserver/svn/repo/proj_b
https://myserver/svn/repo
は単一のリポジトリのルートではなく、すべてのリポジトリを含むディレクトリを表すApache仮想ディレクトリであることに注意してください。
さて、ここに 573,198.52 ドルの質問があります (インフレを伴う 64,000 ドルの質問): にコミットするとhttp://hostname/svn/repo/proj_a
、 の最新のリビジョン番号も更新されhttp://myserver/svn/repo/proj_b
ますか? そうでない場合、各プロジェクトは個別の Subversion リポジトリであり、複数の Subversion リポジトリが同じインスタントを共有できる 2 番目の例に示すように構成されます。
つまり、 を作成するにはnew_project
、Subversion サーバーにログオンし、svnadmin create
コマンドを使用して新しいリポジトリを作成する必要があります。その後、URL からすぐに利用できるようになりhttps://hostname/svn/repos/new_project
ます。
への変更をコミットするとproj_a
の最新リビジョンがインクリメントされる場合、すべてのプロジェクトは単一の Subversion リポジトリにあり、有効な Subversion ディレクトリとしてproj_b
使用できるはずです。https://hostname/svn/repo
チェックアウトを試してください:
$ svn co --depth=immediates https://hostname/svn/repo
ディレクトリをチェックアウトするだけで、すべての--depth=immediates
サブディレクトリを再帰することはありません。このようにして、使用できる作業ディレクトリが作成されます。
$ svn co --depth=immediates https://hostname/svn/repo
$ cd repo
$ svn mkdir --parents new_project/trunk new_project/tags new_project/branches
$ cd ..
$ svn status
A new_project/trunk
A new_project/tags
A new_project/branches
$ svn commit -m "added new_project"
それが役立つかどうかを確認してください。