web-dev-qa-db-ja.com

diffの出力を使用してパッチを作成する

このようなものがあります

src/sim/simulate.cc
41d40
< #include "mem/mem-interface.h"
90,91d88
<             dram_print_stats_common(curTick/500);
<
src/mem/physical.hh
52d51
<   public:
55,56d53
<       public:
<
58a56,57
>       public:
>
61,62c60,61
<         virtual bool recvTiming(PacketPtr pkt); //baoyg
<
---

これは、ソースツリーでdiffコマンドを使用して作成されたと思います。私が望んでいるのは、その出力を使用してパッチを作成し、同じ変更をソースツリーに適用することです。

39
Eduardo

私は信じている diff -u oldfile newfile > a.patchはパッチファイルの作成に使用されますが、他のスイッチも同様にスローされる場合があります(-N?)。

編集:OK、4年後、最後にスイッチの意味を説明します。

-uは、 nified diffを作成します。統合差分は、パッチプログラムが入力として取得することを期待する差分の一種です。 u(最小3、デフォルト3)の後に数値を指定して、出力される行数を増やすこともできます。これは、3行ではプログラム内の1つのスポットだけを特定するのに十分ではない場合です。

-Nは、存在しないファイルを空として扱います。つまり、ファイルの1つが空の場合(または次のポイントを参照)、多くの追加コンテンツが生成されます。

また、newfileoldfileは、両方とも単一ファイルではなくディレクトリにすることができます。おそらく-r引数により、サブディレクトリが再帰されます。

70
Powerlord

SVN diffと同じパッチ出力を取得するには、2つの異なるファイルを指定します。

diff -Naur file1.cpp file2.cpp

14

あなたが持っているものは、統合されていない差分です。 patchはそれを読み取ることができますが、コンテキストを一致させることができず、間違いを犯す可能性が高くなります。

2
Sparr

is(部分的な)パッチファイルですが、統合されたdiff出力が提供されていればもっとよかったでしょう。

そのパッチの主な問題は、どのファイルが変更されているかについて言及していないことであり、コンテキストが提供されていないため、ファイルはexactでなければならず、パッチはファイル。

1
Arafangion