0

基本的に、HEAD とマージする必要があるブランチ (B と呼びます。ブランチ固有のコードが含まれています) があります。私たちが抱えている問題は、ブランチがずっと前に作成されたことです。それ以来、HEAD は何度も更新され、多くの新機能が追加され、多くのバグが修正されました。B ブランチには、HEAD で既に修正されたバグのほとんどがまだ残っており、いくつかの機能が欠けています。したがって、ブランチ B のいくつかの機能を使用する必要があります (おそらく、新しい機能を含む約 50 個のファイルがあります。これらのファイルが何であるかは正確にはわかりません) 残りの HEAD はそのまま残します。

現在、Eclipse のマージ ツールは 1700 を超える変更を報告しており、自動マージを実行すると、HEAD のコードがブランチのコードで上書きされます (したがって、既に修正されているバグが再び発生します)。1700 の変更をすべて行って手動でマージする代わりに、これに取り組むより良い方法はありますか?

4

1 に答える 1

0

私があなたの問題を理解したら、特定のブランチで何が変更されたのかを調べて、それらの変更をトランクに適用してください。これを行う最も簡単な方法は、パッチファイルを作成することだと思います。

ブランチのベースとチップを別々のディレクトリにチェックアウトすることから始めます。あなたは、CVS を使用している 99% の人々よりも優れたベース タグを持っているとおっしゃいました。そうでない場合は、日付ベースのチェックアウトを実行できます。正しい日付を見つけるのは大変です。最も簡単な方法は、ブランチで変更されていないことがわかっているファイルのログを調べ、そのブランチがリビジョン履歴のどこに表示されるかを追跡することです。

2 番目のステップは、ブランチで行われたすべての変更を記述するパッチ ファイルを作成することです。ここでの手順は完了しているようです (「パッチの作成」を Google で検索し、上位の結果を見ました)。

次に行うことは、パッチの大きさと、枝が切られてから幹がどれだけ変化したかによって異なります。運が良ければ、最も簡単な方法は、リンクされたドキュメントに記載されているように、トランクをチェックアウトしてパッチを適用することです。少なくともいくつかの失敗が発生する可能性があり、とにかく各変更をチェックして、それがまだ意味があることを確認する必要があります.

別の方法として、3 つのウィンドウを開くこともできます。ウィンドウ #1 はパッチファイルで、変更されたファイルとその中で何が変更されたかを示します。ウィンドウ #2 はブランチ (の先端) にあるファイルなので、現在何をしているかを確認できます。ウィンドウ #3 は、トランク上のファイルです。このアプローチでは、コードを 2 番から 3 番に適切な場所にコピーし、1 番は単にコピーされるもののガイドとして使用します。

価値のあることとして、CVS は分岐とマージで特に苦労しますが、VCS は高度に分岐したブランチのマージに適していません (Joel が何と言おうと)。

于 2013-02-27T17:27:37.883 に答える