ファイルの一部のみをパッチします。

ファイルの一部のみをパッチします。

fileWithMyFix.cとfileCustUpdated.cという2つのファイルがあります。 filewithmyfixを修正しましたが、顧客が同じファイルを別の(関連していない変更)に更新していることはまったくわかりませんでした。

私の変更をそのファイルにプッシュする必要があります。両方のファイルに違いがあるため、フラットパッチが機能しないようです。これを比較してパッチを適用すると、fileWithMyFixと一致するようにfileCustUpdated.cを復元しようとしますが、最終的に問題が発生します。

パッチするファイルの特定の部分を正確に見つける方法はありますか? fileWithMyFix.cをsvnから削除した変更されていないファイルと比較してから、そのようにパッチを適用する必要がありますか?行番号が合わず問題も生じそうです。

編集 - 以前のバージョンと比較した可能性がありますが、復元を実行し、パッチが正しく適用されました。新しい質問 - これを避けるためにどのようにdiffを行うことができますか?

ベストアンサー1

変更されたファイルと変更されていないバージョンを比較する必要があります。 diff 出力形式に他のオプションがある場合は、統合 diff またはシチュエーション固有 diff を作成します。これらの形式には、変更された行の周りにいくつかのコンテキスト行が含まれます。patch行番号が変更されても、ツールは通常変更する行を探します。

ファイルがSVNにある場合は、2つのワークスペースを使用し、1つのワークスペースでカスタマーバージョンをコミットしてから、変更されたバージョンでワークスペースを更新できます。これにより、クライアントの変更がファイルにマージされ(おそらく競合を解決した後)、最終的にファイルをコミットできます。これで、すべての修正を含める必要があります。

おすすめ記事