AとBの2つのプロジェクトがあります。私が取り組んでいるプロジェクト「B」は「A」の下流にあります。つまり、BはAにさまざまな機能を追加し、さまざまな方向に成長しました。しかし、それらは共通の歴史を共有しています。
少し前に、BはAのメジャーリリースごとに定期的に更新されて維持されていました。しかし、これはもはや当てはまりません。
Bのメモリリークを追跡したところ、1年以上前にAで修正され、パフォーマンスを向上させるためにAに多くの変更が加えられたことがわかりました。
これらの変更はすべてプロジェクトBに統合する必要があることが決定されました。
これが私が今していることです。明らかに、タスクを管理不能にするかなりの数の問題があります。しかし、それらのどれも私の質問に本当に関係していません。
コンポーネントごとにdiffのコンポーネントを作成し始め、何が変更されたかを確認し、Aには存在しなかったBの機能を中断せずに何を含めることができるかを判断しました。
コンポーネントごとに新しいブランチを作成しました(管理しやすくするために、特定のコンポーネントの外部で変更されたコードに対する参照を保持しているものを特定します)元々はマージを実行できると考えていましたが、以前にマージを使用したことを覚えているようです。ものを書きすぎる; しかし、何らかの理由でAのコンポーネントをBとマージしようとすると、Bに固有のコードのほとんどが失われました。
しかし、うまくいく可能性があるのは、私が気付いていないピットフォールの可能性があるテクニックに時間を費やすことを躊躇しているのですが、diffから作成されたパッチを編集するだけです。
次に、編集したパッチを適用します。
パッチではコードの両側を並べて表示できるため、コードを削除したくないビット(-)を削除して、ケースバイケースで競合を心配することができます。
誰かがこれを試しましたか?または、この種の問題を処理するためのより主流の手法を知っている人はいますか?
もう1つの問題は、gitシステムによって破損することなく、パッチをどのように変更できるかということです。