どのようにpatch p 0 p 1を打って区別します


USb-2.6.12 LE 06をしています.patch.tar.gzパッチでエラーが発生したので、patchの方法を探して、パラメータの解釈を見て、勉強しました.
blog.chinaunix.net/u1/48180/showart_1868730.html
次は私のエラーバックアップです.
//
なぜならpatchのディレクトリが間違っているので、kernel同級のdrivers/usb/ディレクトリの下で行うべきですよ
[root@localhost usb]# tar zxvf usb-2.6.12LE06.patch.tar.gz 
usb-2.6.12.patch
[root@localhost usb]# ls
usb-2.6.12LE06.patch.tar.gz  usb-2.6.12.patch
[root@localhost usb]# patch -p1 < usb-2.6.12.patch
can't find file to patch at input line 4
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|diff -ruN usb_old/Makefile usb/Makefile
|--- usb_old/Makefile    2005-06-19 19:09:13.000000000 +0200
|+++ usb/Makefile    2005-11-06 00:44:46.000000000 +0100
--------------------------
File to patch: 
Skip this patch? [y] y
Skipping patch.
1 out of 1 hunk ignored
can't find file to patch at input line 15
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|diff -ruN usb_old/media/Kconfig usb/media/Kconfig
|--- usb_old/media/Kconfig    2005-06-19 17:49:07.000000000 +0200
|+++ usb/media/Kconfig    2005-11-25 21:14:39.000000000 +0100
--------------------------
File to patch: 
Skip this patch? [y] y
Skipping patch.
1 out of 1 hunk ignored
can't find file to patch at input line 38
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|diff -ruN usb_old/media/Makefile usb/media/Makefile
|--- usb_old/media/Makefile    2005-06-19 17:49:07.000000000 +0200
|+++ usb/media/Makefile    2005-11-05 23:05:56.000000000 +0100
--------------------------
File to patch: 
Skip this patch? [y] y
Skipping patch.
1 out of 1 hunk ignored
patching file media/spca5xx/cs2102.h
patching file media/spca5xx/hdcs2020.h
patching file media/spca5xx/hv7131b.h
patching file media/spca5xx/hv7131c.h
patching file media/spca5xx/icm105a.h
patching file media/spca5xx/Makefile
patching file media/spca5xx/Makefile.2.4
patching file media/spca5xx/Makefile.org
patching file media/spca5xx/pas106b.h
patching file media/spca5xx/pb0330.h
patching file media/spca5xx/sn9cxxx.h
patching file media/spca5xx/sp5xxfw2.dat
patching file media/spca5xx/sp5xxfw2.h
patching file media/spca5xx/spca5xx.h
patching file media/spca5xx/spcaCompat.h
patching file media/spca5xx/spca_core.c
patching file media/spca5xx/spcadecoder.c
patching file media/spca5xx/spcadecoder.h
patching file media/spca5xx/spcausb.h
patching file media/spca5xx/tas5130c.h
patching file media/spca5xx/zc3xx.h
[root@localhost usb]# 
#####################
以下は無名のブログ:vcdog.cublog.cnの具体的な内容:
今日QQに行く时evaが使うことができないことを発见して、それからまた解决方法を见て、だからパッチをかけたいですが、できません:-).後で調べて分かって、総括を書いて、分かち合って、以前この方面のものがあるかどうか分からないで、私がこれが余計ではないことを望んでいます.
パッチファイルを作成するには
コード:

   
   
   
   
diff -Naur > patch diff -Naur > patch

ディレクトリ・レイヤ数の制限
patchを作成するときのフォルダのレイヤ数は同じです.たとえば、
コード:

   
   
   
   
--- old/modules/pcitableMon Sep 27 11:03:56 1999 +++ new/modules/pcitableTue Dec 19 20:05:41 2000

これでいいです.
そして
コード:

   
   
   
   
--- old/try1/other/modules/pcitableMon Sep 27 11:03:56 1999 +++ new/modules/pcitableTue Dec 19 20:05:41 2000

このようにするといくつかの問題があるかもしれません.
patchの使い方
1つのpatchファイルには、2つの一般的な使用方法があります.
1.
コード:

   
   
   
   
cat new-patch | patch -p0

2.
コード:

   
   
   
   
patch -p0 < new-patch

patchコマンド内のレイヤ数(-p 0?-p 1?)
パラメータ-pは、レイヤ数から比較を指定します.たとえばpatchファイルのパッチヘッダは次のようになります.
コード:

   
   
   
   
--- old/modules/pcitableMon Sep 27 11:03:56 1999 +++ new/modules/pcitableTue Dec 19 20:05:41 2000

パラメータ-p 0を使用すると、現在のディレクトリからnewというディレクトリを探し、その下にmodulesというディレクトリを探し、その下にpcitableMonというディレクトリを探します.
パラメータ-p 1を使用すると、最初のレイヤを無視して、現在のディレクトリからmodulesというディレクトリを探し、その下にmodulesというディレクトリを探します.これにより、パッチヘッダに記載されているnewディレクトリが無視されます.
このように推す.
patchファイルの構造
パッチヘッダ
パッチヘッダは、それぞれ---/++で始まる2行で、パッチを適用するファイルを表します.
1つのパッチ・ファイルの複数のパッチ
1つのパッチ・ファイルには、1つのパッチを適用するために使用される---/++で始まる多くのセクションが含まれます.したがって、1つのパッチファイルに複数のパッチを含めることができます.
ブロック
ブロックはパッチで修正する場所です.それは通常、一部の修正されていないものから始まり、終わります.彼らは修正する位置を表すだけです.彼らは通常@@で始まり、別のブロックの開始または新しいパッチヘッダで終了します.
ブロックのインデント
ブロックは列をインデントしますが、この列は行が追加されるか削除されるかを示すために使用されます.
ブロックの最初の列
+番号はこの行が加算されることを示します.
-番号は、この行が削除されることを示します.
プラス記号もマイナス記号もないのは、ここでは参照されているだけで、修正する必要はありません.
patchの例
コード:

   
   
   
   
diff -u old/modules/pcitable new/modules/pcitable --- old/modules/pcitableMon Sep 27 11:03:56 1999 +++ new/modules/pcitableTue Dec 19 20:05:41 2000 @@ -1,4 +1,6 @@ 0x0e110xae10"cpqarray""Compaq|Smart-2/P RAID Controller" +0x10000x0010"cpqarray""Compaq|Integrated Array Controller" +0x10110x0046"cpqarray""Compaq|Smart-2/P RAID Controller" 0x0e110xae32"tlan""Compaq|Netelligent 10/100" 0x0e110xae34"tlan""Compaq|Netelligent 10" 0x0e110xae35"tlan""Compaq|Integrated NetFlex-3/P" @@ -21,6 +23,7 @@ 0x10000x000f"ncr53c8xx""Symbios|53c875" 0x10000x0012"ncr53c8xx""Symbios|53c895a" 0x10000x008f"ncr53c8xx""Symbios|53c875J" +0x10000x000a"sym53c8xx""Symbios|53c1510" 0x10000x0701"yellowfin""Symbios|83C885 gigabit ethernet" 0x10000x0702"yellowfin""Symbios|Yellowfin G-NIC gigabit ethernet" 0x10110x0001"tulip""DEC|DECchip 21050" --- old/usr/share/kudzu/pcitableSun Sep 26 17:11:23 1999 +++ new/usr/share/kudzu/pcitableTue Dec 19 20:05:41 2000 @@ -15,6 +15,8 @@ 0x0e110x3034"unknown""Compaq|QVision 1280/p" 0x0e110x4000"unknown""Compaq|4000 [Triflex]" 0x0e110xa0f3"ignore""Compaq|Triflex PCI to ISA Bridge" +0x10000x0010"cpqarray""Compaq|Integrated Array Controller" +0x10110x0046"cpqarray""Compaq|Smart-2/P RAID Controller" 0x0e110xae10"cpqarray""Compaq|Smart-2/P RAID Controller" 0x0e110xae29"unknown""Compaq|MIS-L" 0x0e110xae2a"unknown""Compaq|MPC" @@ -46,6 +48,7 @@ 0x10000x000f"ncr53c8xx""Symbios|53c875" 0x10000x0012"ncr53c8xx""Symbios|53c895a" 0x10000x008f"ncr53c8xx""Symbios|53c875J" +0x10000x000a"sym53c8xx""Symbios|53c1510" 0x10000x0701"yellowfin""Symbios|83C885 gigabit ethernet" 0x10000x0702"yellowfin""Symbios|Yellowfin G-NIC gigabit ethernet" 0x10000x0901"unknown""Symbios|61C102"

ぶんせき
この例は命令によって
コード:

   
   
   
   
diff -u old/modules/pcitable new/modules/pcitable

作成されます.ただし、diff-uの代わりにコマンドdiff-Naurを使用することが望ましい.
2つのファイル、new/modules/pcitableとnew/usr/share/kudzu/pcitableを変更しました.
最初のパッチヘッダには2つのブロックが含まれており、それぞれ2行と1行が追加されています.