私たちは以前、SVN のレッドブック推奨プラクティスを利用したかなり単純な分岐システムを使用していた中小規模のチームです。現在の開発では不安定なトランクで、作業には 1 日以上かかるなどです。
私は最近、残念ながら間違っていることに気付いた変更を実装しましたが、これを適切に行う方法に困惑しています。
このプロジェクトは現在、複数のチームのソースで使用される予定です。ソースではなくバイナリを公開する必要があるという考え方があることはわかっていますが、これはオプションではありません。チームはソースに積極的な変更を加える必要があります。
これを実現するために、私は次のことを提案しました。
- トランクはアクティブな開発用ではありません
- 各チームは独自の「メイン開発」ブランチを持ちます - これは事実上、以前はトランクでした。
- 小規模なプロジェクトの作業項目については、各チームが「メイン開発」ブランチからブランチを取得します。
したがって、開発サイクルが完了すると、各チームは「メイン開発」ブランチをトランクに再統合します。これにより、他のチームは必要に応じてマージでき (安定性が得られます)、新しい「メイン開発」ブランチが作成されます。次のサイクル。
EG、以下はブランチのレイアウトです (物理的なレイアウトではありません) - したがって、各チームはチーム開発ブランチのトランクからブランチを取得し、各メンバーの作業ブランチからブランチを取得します。
--Trunk
\ TeamAMainDev1
\ PRJ1-teama
\ TeamBMainDev1
\ PRJ1-teamb
問題は、一部のブランチが親の MainDev ブランチよりも長く存在する必要があることです。親がトランクに統合され、新しい MainDev が作成されると、マージは明らかに機能しません。したがって、新しい TeamAMainDev2 ブランチがあった場合、それを PRJ1-teama にマージしようとすると、ツリーの競合などが発生します。これは明らかに理にかなっています。MainDev1 の変更が PRJ1 にあったことを SVN が認識すると思っていましたが、MainDev1 からの再統合全体をマージする必要があるため、これは機能しません。
他の人はこれをどのように処理しますか? ブランチから複数のブランチを作成するには、親からの最新のマージを常に行う必要がありますが、別の親に再統合することもできます。または、他の人が推奨するプロセスは何ですか?
助けてOB1。