変更したいディレクトリのソースツリーにどのようにパッチを適用しますか?

変更したいディレクトリのソースツリーにどのようにパッチを適用しますか?

ソースツリーには、変更されたdnsmasq-2.80test4ソース(およびgitファイル)が含まれています。

これで、ユーザーのホームフォルダで作業しながら、diff最新の2.86 dnsmasqソースコードを変更された2.80test4に適用したいと思います。patch

だから... / dnsmasq-2.80test4をユーザーのホームディレクトリにコピーすることから始め、次のようにdiffファイルを作成しました。

~$ diff -urN ./dnsmasq-2.80test4 ./dnsmasq-2.86 > dnsmasq-2.86.diff

~/dnsmasq-2.80test4その後、次のように古いフォルダをパッチしようとしました。

~$ cd ./dnsmasq-2.80test4
~$ patch --dry-run -i ../dnsmasq-2.86.diff

CHANGELOG、FAQ、Makefile、Versionでうまく機能します。Android.mkサブディレクトリの最初のファイルはbld失敗しますが、これは大きな問題ではありません。実際の取引ブロッカーは、同じサブディレクトリにある2番目のファイルです。

can't find file to patch at input line 466
Perhaps you should have used the -p or --strip option?
The text leading up to this was:
--------------------------
|diff -ur ./dnsmasq-2.80test4/bld/get-version ./dnsmasq-2.86/bld/get-version
|--- ./dnsmasq-2.80test4/bld/get-version    2022-07-03 17:32:08.541879257 +0200
|+++ ./dnsmasq-2.86/bld/get-version 2021-09-08 22:21:22.000000000 +0200
--------------------------

解決策

作業ディレクトリを1つ上のレベルに変更し、最新の/ dnsmasq-2.86ソースディレクトリの名前を別の名前に変更する(または単に削除した場合)、次のようにパッチが古い/ dnsmasq-2.80test4ディレクトリに正しく適用されているように見えます。

~$ patch --dry-run --verbose -p0 -i dnsmasq-2.86.diff

質問

dirの代わりに作業ディレクトリに変更する必要があるディレクトリ()で作業できるように、およびdiff/またはコマンドを変更するにはどうすればよいですか?patchpatchcd ./parent/dnsmasq-2.80test4cd ./parent

ベストアンサー1

おすすめ記事