0

コード ベースの一部としてサード パーティのライブラリを使用しています。バグがあり、2 つの選択肢があります。

  1. クラスを作成してオーバーライドし、大きな自由な動作を提供します。
  2. バグの svn パッチを作成する

論理的には理にかなっているので2を好みますが、これを行う方法がわかりません。

私は次のことをしますか:

  1. サードパーティのライブラリ コードを変更する
  2. パッチ ファイルを作成する
  3. リポジトリを元に戻す
  4. パッチファイルを適用する
  5. パッチ ファイルをリポジトリに追加する
  6. 変更をコミットする

??

パッチを使用する必要がある場合、これはリポジトリのどこに保存されますか?

4

1 に答える 1

1

ベンダー ブランチを確認します。

しかし、独自のバージョン管理システムでサードパーティ コードへのカスタム変更を維持したい場合があります。[...] これらの変更には、新しい機能やバグ修正が含まれる場合があります [...]。

今、あなたは興味深い状況に直面しています。プロジェクトは、パッチ ファイルや完全な代替バージョンのファイルやディレクトリを使用するなど、バラバラな方法でサード パーティ データへのカスタム変更を格納できます。しかし、これらはすぐにメンテナンスの頭痛の種になり、カスタム変更をサードパーティ コードに適用するための何らかのメカニズムが必要になり、追跡するサードパーティ コードの連続するバージョンごとにそれらの変更を再生成する必要があります。

ベンダー ブランチは基本的に、ソース コードの変更されていないバージョンを含むディレクトリ (A と呼びます) です。このディレクトリをプロジェクト (または他の場所。これを X と呼びます) に分岐し、パスをこの分岐に適用します。ベンダーがコンポーネントを更新した場合、それをディレクトリ (B と呼びます) にインポートします。独自の変更したライブラリを更新するには、B と A の間でマージを行い、これを X に適用します。このようにして、変更を保持するだけでなく、ベンダーのソフトウェア バージョン間のすべての変更も取得します。

マージ コマンドで --ignore-ancestry オプションを使用することに注意してください。そうしないと、変更されたファイルが置き換えられ、差分が適用されません。

于 2013-02-01T00:40:47.427 に答える