複数のプロジェクトを対象に各プロジェクトもサブシステムを持っているような大規模の場合は、Apacheのリポジトリ構成が参考になると思います。
https://svn.apache.org/repos/asf/
構成のポリシーを見つけられませんでしたが、第一階層がプロジェクト、第二階層がサブシステム、第三階層がSubversionでおなじみのtrunk, tags, branchesという構成です。
ご存知かもしれませんがtrunkは開発本線、tagsはタグ付けされたソースセット、branchesはブランチを格納します。
この構成は汎用的なので、今後はこの構成を採用しようと考えています。
以前に特定システム専用のリポジトリとして下記のような構成をしたことがあります。Apacheの構成より階層がひとつ少ない特定プロジェクト専用の構成というイメージです。
第一階層がtrunk, tags, branches、第二階層がサブシステム
チェックアウトが一度にできるのでビルドやパッケージなどの処理で便利かなと思い採用しましたが、今考えると下記のほうがよかったと考えています。
第一階層がサブシステム、第二階層がtrunk, tags, branches
機能的には違いはないように思いますが、後者の構成の場合、設計でサブシステムに分けた設計意図が、現場の開発者に誤って伝わってしまうケースがありました。
”trunk下に全部ある->いろいろ分かれているけど単一のものと認識するようになる”となり、何かのきっかけで問題(設計段階でのサブシステム分割が適切でないとか)が発生すると根本問題を解決(設計上の不具合を修正するとか)に目が向かず”分ける意味ないじゃん、一緒にしちゃえば”といった意見がでてきます。
Subversionのドキュメントにも下記に構成についての記載があります。
http://subversion.bluegate.org/doc/book.html#svn.reposadmin.proj...
/home/svn/repos/prj/製品名/trunk/ 最新バージョンのコード
/home/svn/repos/prj/製品名/branches/ 過去のバージョンのソースコード
/home/svn/repos/prj/製品名/tags/ 作ったけどつかっていません。
/home/svn/repos/prj/製品名/tools/ 各種スクリプトやツールなどを置いています。
これはひとつのリポジトリにすべてのプロジェクトを入れているということでいいんですよね?
全部まとめるという手もあるのか。
リポジトリの構成とは、リポジトリのディレクトリ構成と考えてよいですか?
何を管理するかによっても、どのようなディレクトリ構成が管理しやすいか
も変わってくると思いますので、基本的には管理対象に応じた構成になると思います。
当方では、Java言語によるアプリケーション開発の成果物をSubversionで
管理していて、
a.Javaプロジェクト
b.設計書などのドキュメント
が管理対象です。
a.Javaプロジェクト
これは、Javaの開発環境に何を使うかにもよりますが、当方では
Apache Mavenで開発しているため、Mavenで決められたディレクトリ構造
そのままにSubversionに格納しています。
例えば、以下のような感じです。
/Hoge
/src
/main
/java・・・以下にJavaのソースを格納
/test
/java・・・以下にJUnitのソースを格納
SeasarファウンデーションのSubversionリポジトリも参考になるのではないでしょうか。
c.設計書などのドキュメント
これも、システム会社の規則としてドキュメントを構造化していて、
ディレクトリ構成が決められていますので、そのままSubversionに格納しています。
例えば、以下のような感じでフェーズ毎にディレクトリを切ったりしています。
/Doc
/00.要件定義
/10.仕様
/20.外部設計
/30.内部設計
/40.製造
/50.単体テスト
/60.結合テスト
/70.システムテスト
/80.保守運用
Subversionでは、ディレクトリ構成を履歴を保持したまま変更可能なので、
あまり難しく考えずに、はじめはシンプルにはじめて、必要に応じて細分化していっても良いと思います。
なるほど、細かく分けずに大まかに分けた方がよさそうですね。
個人的に利用しているので、規模は小さいですが、ひとつのプロジェクトにサブプロジェクトがある場合とても参考になりそうです。