Subversion でタグとブランチを管理するための、一般的に推奨されているもの (「タグ」と「ブランチ」と呼ばれる並列ディレクトリ) よりも優れた手法を思いついた人はいますか?
3 に答える
「トランク、タグ、ブランチ、ストリーム」戦略を使用します。
「トランク」は、本番環境にあるものの最新バージョンが配置される場所です。
「タグ」は、ストリームが完了したときに「コピー先」が発生する場所であり、アーカイブ目的でストリームのステータスを保存する必要があります。また、特定のポイントから開発を継続することもできます。
「分岐」とは、主流の開発とはまったく異なる何かが行われるときです。通常、枝は非常にまれです。
「ストリーム」は、私たちが最もよく使用するものです。開発のストリームは、特定の修正または開発作業 (変更要求の完了など) のストリームなど、タスクベースのフォーカスです。ストリームは互いにマージできますが、異なるストリームは svn 戦略に基づいてランク付けされます。たとえば、cr リリース用の 1 つのストリームと、アプリ サポート リリースをプッシュするための別のストリームがありました。CR ストリームは、独自の変更に加えてアプリ サポートの修正を組み込む必要があったため、上位にランクされました。ランクの高いストリームには、(必要に応じて) 下位のストリームがマージされます。最後に、ストリームが本番環境に対応できるようになります。これはタグ付けされてからトランクに「コピー」され、その後のストリームのベースとして使用されます (通常は、タグが使用されることもあります)。
ただし、ストリームの最適な用途は、完了までに 2 週間もかからない短いタスクです。これらのストリームは、複数のより高いランクのストリームにすばやくマージできます。これらのストリームは、後で他のより高いランクのストリームにマージされます。たとえば、アプリ サポートは cr よりも低かったため、アプリ サポートのクイック フィックスをストリームにコピーして作業し、アプリ サポートにマージしてから、cr ストリームにマージすることができました。
ブランチやタグなどの情報を伝えるためにリポジトリの名前空間を使用することは、基本的に SVN モデルです。別のモデルが必要な場合は、おそらく SVN 以外のものが本当に必要です。
SVN での CVS スタイルのラベルのようなメタデータの欠如は、意図的な設計上の決定です。ツリーで選択したブランチ/タグ/プロジェクトの配置に関係なく、目的ごとに並列ディレクトリのセットにすべて縮小されます。あとは、ブランチとタグに適切な命名戦略を選択して、物事をより明確にするだけです。
私が気に入っている規則の 1 つは、完全な重量級のブランチと軽量の「小枝」を分離することです。私が働いているグループの慣例は、長期間の開発はブランチで行い、リリース エンジニアは各ブランチを把握し、部分的に責任を負う必要がありますが、どのエンジニアもスクラッチ スペースとして使用する短期間の小枝を作成できるというものです。大きすぎて 1 回のチェックインに収まらないが、リリース エンジニアリング サポートが必要なほど大きくない問題の場合。ここでの小枝は、枝と同様に別の並行した「小枝」ディレクトリに存在し、命名規則には、多くの場合、作成者のユーザー ID と、小枝が対処しようとしている問題のバグ ID 番号が含まれています。
ブランチがあるときに並列ディレクトリを持つ以外にできることは、どちらか一方で作業するときはいつでも2つのブランチ間でSVNスイッチを実行することだけです。おそらく、このシステムについて「より良く」なりたいことを明確にする必要があり、人々は提案をすることができます。