私たちはSubversionを使用しており、私のような少数の個人を除いて、Subversionでの分岐とマージの経験はほとんどまたはまったくありません。私のSubversionの経験は、マージとツリーの競合が正確にまれではありませんが、解決するのがそれほど難しくない単純な機能ブランチに限定されています。
それを踏まえて、私は現在のトランクへのコミット方法が私たちのニーズに対して単純に持続不可能であるプロジェクトの管理を支援しています。ローカライズされたチームに機能の分岐とマージを導入し、ある程度の成功を収めました。ただし、単純な機能の分岐では、次のようなすべての質問に答えることができませんでした。
- このリリースと後続のリリースのコードを並行して開発するにはどうすればよいですか?
- どのコードが安定していると見なされますか?
- どの(開発中の)コードが次のリリースに入る予定ですか?
- どの(開発中の)コードが次のリリースに入る予定ですか?
- テスト、アクセプタンス、または本番環境のコードのバージョンは何ですか?
- 同時開発アクティビティを既知の安定したリリースと統合して、バグの導入や不完全な作業を減らすにはどうすればよいですか?
- リリースされたコードにホットフィックスを提供するにはどうすればよいですか?
- ソース管理から、現在進行中の開発活動をどのようにして知ることができますか?
- 活用しながら現在のコードベースを中断することなく、どのように実験または研究開発を行うのですか?
ここで定義されている git-flowは、これらの質問の多くに答えるのに大いに役立つようです。Mercurialでこのメソッドを試しましたが、このメソッドも実装できるようです。残念ながら、この時点でDVCSへの移行はテーブルから外れています。
ただし、Subversionでこのメソッドを模倣する簡単な試みは、多くのマージとツリーの競合で失敗しました。マージオプションとエッジケースは非常に多く、不可解です。
Subversionを使用してgit-flowを実装できますか?その場合、問題のレベルはどれくらいですか?