「通常の」svnディレクトリ構造とは異なり、私は次の構造を使用しています。
トランク/ project1 / project2 / project3 / ..。 ブランチ/ project1-ブランチ/ project1 / project2 / ..。 project2-ブランチ/ project1 / project2 / ..。 タグ/ project1 / V1 V2 ..。
ご覧のとおり、プロジェクトごとに個別のトリプル(トランク/ブランチ/タグ)はありません。
開発のために、必要なすべてのプロジェクトを含むトランクのチェックアウト(場合によってはスパースチェックアウト)を実行します(プロジェクト間には依存関係があり、一部のプロジェクトは単なるライブラリです)。
これに見られる利点は次のとおりです。
すべてのプロジェクトに共通のルートディレクトリ(トランク)があるため、更新とチェックインは簡単です。1つは単純である
svn update
か、svn commit
それをすべて行います。タグまたはブランチの作成は簡単です。これを行うために必要なのはトランクだけだから
svn copy
です。(ブランチとタグには実際には必要以上のプロジェクトが含まれていますが、asvn copy
は安価であり、必要に応じてブランチまたはタグでスパースチェックアウトを実行できます。)リソースはすべて同じリポジトリにあるため、あるプロジェクトから別のプロジェクトへのリソースの移動は簡単です。
トランクのフルチェックアウトに取り組んでいるときは、プロジェクトを見逃さないようにすることができるため、グローバルリファクタリング(たとえば、一般的に使用されるクラスのパッケージの変更)は簡単です。
あるプロジェクトから別のプロジェクトへのリファクタリングの移動があった場合でも、ブランチ全体を一度にマージできるため、マージは簡単です。
私はMavenに移行し、すべてのプロジェクトをトランクからMavenプロジェクトに分割するつもりです。Mavenの依存関係管理と利用可能なプラグインの恩恵を受けたいです(現在、巨大なカスタムantファイルを使用しています)。
今私の質問は次のとおりです。
すべてのプロジェクトに独自のトリプル(トランク/ブランチ/タグ)を与えるためにsvnディレクトリ構造を変更する必要がありますか?答えは「はい」だと思います。
構造を変更した場合、上記の利点のどれが失われますか(つまり、Mavenでそれを行うとより複雑になることを意味します)?
Mavenでそれを行うための同等の方法は何ですか?