私が取り組んでいるプロジェクトはSVNによってバージョン管理されており、作業中の暗黙のルールは、新しい安定した機能が追加されたときにのみコミットすることです(元に戻さない「クリーンな」リビジョン履歴を持つため)。コミットせずに数日。
しかし、私は一種のコミットマニアックであり(以前のgitプロジェクトでは1日に数回のコミット)、このワークフローは私には適していません。理想的には、プロジェクトをフォークし、「潜水艦レポ」の下で不安定なバージョンをコミットし、機能が十分に安定しているときはいつでも安定したバージョンにマージしたいと思います(私の不安定なコミットは安定したリポジトリに表示されてはなりません)。これどうやってするの ?
SVNの場合: ベンダーブランチ と 外部 を探しましたが、本当に欲しいものが見つかりませんでした。
Gitを使用する場合:マージ中に2つのCVS間で競合することなく、アンダーカバーの不安定なリポジトリでGitを使用し、安定したリポジトリにSVNを使用することは可能ですか?
Subversionを使用すると、すべての目的と目的で不完全なコードをトランクに入れないようにするブランチで操作できます。
Gitを使用すると、すべての変更をマスターにプッシュする前にローカルで操作できます。または、Subversionと同様に、複数のブランチで操作できます。
DVCSであるという事実を除いて、Git over Subversionを使用する主な利点は、Subversionを使用する場合よりもマージがはるかに簡単なことです。
これどうやってするの ?
選択したVCS/DVCSのブランチで開発作業を行います。機能が安定していて満足できる場合にのみ、トランクにマージして戻します。
Gitを使用する場合:マージ中に2つのCVS間で競合することなく、アンダーカバーの不安定なリポジトリでGitを使用し、安定したリポジトリにSVNを使用することは可能ですか?
この質問/回答 スタックオーバーフローでは、GitをSubversionに同期してプッシュする方法を示しています。うまくいけば、それはあなたが必要とする技術的な詳細のレベルを提供します。
パッチ管理ツールのキルトを使用します。非常に軽量で、大きなツリーに多数の小さな変更を加えるのに効率的で、使いやすいです。
大きなリポジトリにコミットするときは、すべてのパッチを適用して1つの大きなコミットを行うか、1つずつコミットすることができます。
キルトを使用すると、履歴を簡単に書き換えることができるため、完璧主義者になることができます。パッチのスタックを上下に移動して古い作業を修正し、基本的に各パッチを完成させることができます。パッチを個別にバージョン管理システムに移行すると、全体が完璧な作業単位のように見えます。その作業に属する論理的に独立したすべての変更は、多数の個別のパッチに含まれていますが、同じコードに繰り返し変更を加えて動作させることはないため、デバッグが行われたという証拠はありません。