私たちは小さなISVショップであり、通常、毎月新しいバージョンの製品を出荷しています。コードリポジトリとしてSubversionを、IDEとしてVisual Studio 2010を使用しています。多くの人々がMercurialやその他の分散ソース管理システムを主張していることは承知していますが、現時点では、これらのメリットをどのように享受できるかわかりませんが、私は間違っているかもしれません。
私たちの主な問題は、ブランチとメイントランクを同期させる方法です。
これが今日のやり方です。
- 新しいバージョンをリリース(Subversionでタグを自動的に作成)
- 来月リリースされるメイントランクの作業を続けます
そしてこのサイクルは毎月繰り返され、完璧に機能します。この問題は、緊急のサービスリリースをリリースする必要がある場合に発生します。メイントランクから解放することはできません(2)。開発中のため、緊急に解放するのに十分な安定性がないためです。
このような場合、次のことを行います。
- 手順(1)で作成したタグからブランチを作成します
- バグ修正
- テストとリリース
- 変更をメイントランクにプッシュします(該当する場合)。
私たちの最大の問題は、これら2つをマージすることです(ブランチとメイン)。ほとんどの場合、次の理由により、自動マージに依存できません。
- メイントランクに多くの変更が加えられました
- 複雑なファイル(Visual Studio XMLファイルなど)のマージがうまく機能しない
- 別の開発者/チームが理解できない変更を加えたため、マージできない
したがって、これら2つの異なるバージョン(ブランチとメイン)を同期させるためのベストプラクティスは、あなたが考えることです。職業はなんですか?