像我儿子一样永远保持好奇和梦想

[b][z]How to use diff and patch

上一篇 / 下一篇  2012-10-16 12:21:48 / 个人分类:linux

Xk$Te!R1O Z!Bo0 [hsy75]案本文列出了两个目录之间打patch,和生产patch的最基本也是最充足的例子,ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台/_B7X4vd5W+}

ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台*z\[%UW@

其他细节请参考ref: ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台Z7ny:j,M(A9k

ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台"z]}A1Z:?

 ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台ur*ak \u4jh

p OP` @01 diff:ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台R`~PRa1k

ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台`O0\q+wAoJ/[

diff -r/*文件夹所有文件*/ [没有改动的原来的文件夹][改动后需要打补丁记录的文件] > [生成的补丁名称]

X T'Xi#W/`/dtq0ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台\`%i g"hO

2 patch:ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台&p XJ6q?

ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台nZ4o(B(|:yZ,DO5U

patch -p0/*文件夹深度默认当前目录为没有需要补丁的文件夹*/ < [补丁文件和他的路径]

Q,m7[E] y b0

R V]*M!Y8_zQ0


(W:A'sU:e0

^+F/t1hH0H"GXQ3j0深入:当然,如果你的patch需要更多的上下文的内容,那么你应该在diff的时候 加入选项: -N -uET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台}j0zxi%^7}

pE;RS6O&ItwF8K0按照下面的diff 的参考,有ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台!q`#N)I7cr2u1a

g3c t3F3i:e0-N或--new-file  在比较目录时,若文件A仅出现在某个目录中,预设会显示:【hsy75案】这里是指,如果有文件在两个比较目录中,只有一个目录里面有,那么

#^1GS.W!IY&s AP(f0

6?[q'Om}v F'Y0生产的patch会把整个文件的内容加进来,这样就可以保证你的patch不需要你改动的文件了,只需要源文件ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台@8VVzynM_M

ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台RAN;q(B1p*j*c

-u,-U<列数>或--unified=<列数>  以合并的方式来显示文件内容的不同。 这里就是上下文显示方式ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台 rLz b0d0in6I.| K[

ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台6]1l@;v(G'I#s o9Eq


举例:下面里举例不同选项下,patch文件的不同ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台R7IEn8K

ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台5M5\"R]OUu4]"Gf

diff -r 源文件 改动文件 > 文件patch

\f|4r9uOn0ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台fdg? }Uj#kr BzZ

diff -r DirectFB-1.4.3/configure DirectFB-1.4.3-patched/configure
+}V/e!Cl)k5U01007a1008,1009ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台pz LY*M~+DU
> GFX_CNXTGFX_TRUE
uE.YT4epAF@Yq(h8N0> GFX_CNXTGFX_FALSEET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台%SeP c6jTqF vT ||
1748c1750ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台~{Zy4Y.[
<                                matrox, neomagic, nsc, nvidia, omap, pxa3xx, radeon, savage, sh772x,
.|!I4T8r1Y:K2^sPC f q0---ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台$r2q#V q-kC1cc-j0N
>                                matrox, neomagic, nsc, nvidia, omap,cnxtgfx, pxa3xx, radeon, savage, sh772x,
] f"]e!G7Q y0

s*Q7RsWH0ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台 e9U m9L2@P+k&_/U!N_X

diff -rNu 源文件 改动文件 > 文件patchET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台S1KzWT y6E6m

ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台_|Fm;AM$Z0Rl'x

 

S,R{(iGj"C?;?0ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台+{| g4JPc

 GFX_NVIDIA_FALSE
t[p$NSD(HN0+GFX_CNXTGFX_TRUEET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台#tD(_;iV:l)g
+GFX_CNXTGFX_FALSE
2eS:E*XZ?0 GFX_OMAP_TRUEET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台)y} |,l`Bm
 GFX_OMAP_FALSE
;wan_8[T ^P\~0 GFX_PXA3XX_TRUE
$]7K2Vb6_'Q&X+y0@@ -1745,7 +1747,7 @@ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台"~x_ da sC n
                                'all' builds all drivers (default), 'none' builds none
F[^8j} {k0                                Possible gfxdrivers are:
5dU [ m%]|T%F2m0                                ati128, cle266, cyber5k, davinci, ep9x, gl, i810, i830, mach64,
Nz#^mGy3t0-                               matrox, neomagic, nsc, nvidia, omap, pxa3xx, radeon, savage, sh772x,ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台i _ dy#h*\4UTR:F#W
+                               matrox, neomagic, nsc, nvidia, omap,cnxtgfx, pxa3xx, radeon, savage, sh772x

p;S;|5Lj6v&|0
ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台n'C^4O Eu

k,FwaAQ"R9o/A0ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台h{ J0o ^l];S H

ref:ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台%Ko u/Ed[ x

diff(differential)

ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台)b3uU9E$p h

ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台C7](e C ^0R1iz

ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台izvL!Q0I

!Ls7H%b)_0

X[`-Tx/Y0

P_1Qkk@J$\0

"t3Rr J+l:f Z)`0

功能说明:比较文件的差异。
3rY'N.k!TH8WzD*u+G0
1h1r5g?1W0语  法:diff [-abBcdefHilnNpPqrstTuvwy][-<行数>][-C <行数>][-D <巨集名称>][-I <字符或字符串>][-S <文件>][-W <宽度>][-x <文件或目录>][-X <文件>][--help][--left-column][--suppress-common-line][文件或目录1][文件或目录2]
6~`2_1@w\Gy0ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台fe1W5v%k5mS
补充说明:diff以逐行的方式,比较文本文件的异同处。所是指定要比较目录,则diff会比较目录中相同文件名的文件,但不会比较其中子目录。ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台3zL-ui'iW.P

5I"Xgf K0参  数:ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台 KP3TV9y@6C&V
 -<行数>  指定要显示多少行的文本。此参数必须与-c或-u参数一并使用。 ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台6d^"R y6\ ]9n;]!\
 -a或--text  diff预设只会逐行比较文本文件。
*Rwq_C8J*_0 -b或--ignore-space-change  不检查空格字符的不同。 ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台W5BDx8HK
 -B或--ignore-blank-lines  不检查空白行。 ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台-[Fi&o m2g-lT
 -c  显示全部内文,并标出不同之处。 ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台3Af?7HOI
 -C<行数>或--context<行数>  与执行"-c-<行数>"指令相同。 ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台"_z y[9[;U
 -d或--minimal  使用不同的演算法,以较小的单位来做比较。
&_pmNS n0 -D<巨集名称>或ifdef<巨集名称>  此参数的输出格式可用于前置处理器巨集。
NK,Q JT6o't0\0 -e或--ed  此参数的输出格式可用于ed的script文件。
4`:hwL]N_Y0 -f或-forward-ed  输出的格式类似ed的script文件,但按照原来文件的顺序来显示不同处。
X9o7aT7}0 -H或--speed-large-files  比较大文件时,可加快速度。
3H+@L~d%s0 -l<字符或字符串>或--ignore-matching-lines<字符或字符串>  若两个文件在某几行有所不同,而这几行同时都包含了选项中指定的字符或字符串,则不显示这两个文件的差异。 ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台f2KgGi
 -i或--ignore-case  不检查大小写的不同。
3X*tzE dD/}0 -l或--paginate  将结果交由pr程序来分页。 ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台G*qXiC#i|c(TJ8\
 -n或--rcs  将比较结果以RCS的格式来显示。
(f3gkl2D-@_ f0 -N或--new-file  在比较目录时,若文件A仅出现在某个目录中,预设会显示:
]*V$~,UM$nu0Only in目录:文件A若使用-N参数,则diff会将文件A与一个空白的文件比较。
N+|N#V(W |2{r+u0 -p  若比较的文件为C语言的程序码文件时,显示差异所在的函数名称。 ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台 E7bA}3V"[
 -P或--unidirectional-new-file  与-N类似,但只有当第二个目录包含了一个第一个目录所没有的文件时,才会将这个文件与空白的文件做比较。 ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台;VV*s"Na{
 -q或--brief  仅显示有无差异,不显示详细的信息。
] L-L{%QS B0 -r或--recursive  比较子目录中的文件。
*ZuY-oZJ.?R\F0 -s或--report-identical-files  若没有发现任何差异,仍然显示信息。 ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台l&[~2h/F2b6m ] T
 -S<文件>或--starting-file<文件>  在比较目录时,从指定的文件开始比较。 ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台@zb.z/e7\8no.m;zj#{
 -t或--expand-tabs  在输出时,将tab字符展开。 ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台Q{ QQ.}4r7T
 -T或--initial-tab  在每行前面加上tab字符以便对齐。
(pKT7?~ k'E0 -u,-U<列数>或--unified=<列数>  以合并的方式来显示文件内容的不同。 ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台I jh5I$qpE%f
 -v或--version  显示版本信息。
gu*B x#U*v{0 -w或--ignore-all-space  忽略全部的空格字符。 ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台;diV~X)t
 -W<宽度>或--width<宽度>  在使用-y参数时,指定栏宽。
Ta%Dx8D0py+s0 -x<文件名或目录>或--exclude<文件名或目录>  不比较选项中所指定的文件或目录。 ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台%N M:_~I$l$n ~9\i
 -X<文件>或--exclude-from<文件>  您可以将文件或目录类型存成文本文件,然后在=<文件>中指定此文本文件。 ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台k u2n/]7m,g#^
 -y或--side-by-side  以并列的方式显示文件的异同之处。 ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台})V zB&jM J3@
 --help  显示帮助。
drf@` C0 --left-column  在使用-y参数时,若两个文件某一行内容相同,则仅在左侧的栏位显示该行内容。ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台tI-n)xe8` lZU
 --suppress-common-lines  在使用-y参数时,仅显示不同之处

patch

]${kS M,\] I+A0 ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台r {D0Q7y1^

ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台p pg:a-g-b;oG:O2Y

ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台(U%O7X:O&Nh

&o-v2P(@l0

YB5^VZih2Y0

A_%g?vm0

功能说明:修补文件。
HHi+n3cY$P0ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台~8\6cN}3k.L(~
语  法:patch [-bceEflnNRstTuvZ][-B <备份字首字符串>][-d <工作目录>][-D <标示符号>][-F <监别列数>][-g <控制数值>][-i <修补文件>][-o <输出文件>][-p <剥离层级>][-r <拒绝文件>][-V <备份方式>][-Y <备份字首字符串>][-z <备份字尾字符串>][--backup-if   -mismatch][--binary][--help][--nobackup-if-mismatch][--verbose][原始文件 <修补文件>] 或 path [-p <剥离层级>] < [修补文件]
@$@v ni0
Ik!r"@OfJ0补充说明:patch指令让用户利用设置修补文件的方式,修改,更新原始文件。倘若一次仅修改一个文件,可直接在指令列中下达指令依序执行。如果配合修补文件的方式则能一次修补大批文件,这也是Linux系统核心的升级方法之一。ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台N(w8R^0`o8\|
ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台'e9jfq:Y.q5rx^#`
参  数:ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台 h'r$Q^n+i
 -b或--backup  备份每一个原始文件。
M6H3Xk?'w"C0 -B<备份字首字符串>或--prefix=<备份字首字符串>  设置文件备份时,附加在文件名称前面的字首字符串,该字符串可以是路径名称。 ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台;b/V2~7KPbLF@
 -c或--context  把修补数据解译成关联性的差异。 ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台7y'y#O5G!Q$gk"{-pe
 -d<工作目录>或--directory=<工作目录>  设置工作目录。
_'jf Y v?0 -D<标示符号>或--ifdef=<标示符号>  用指定的符号把改变的地方标示出来。
~O#c QW#w;f0 -e或--ed  把修补数据解译成ed指令可用的叙述文件。 ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台I4S"w tO$L
 -E或--remove-empty-files  若修补过后输出的文件其内容是一片空白,则移除该文件。 ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台CaFh[ob?
 -f或--force  此参数的效果和指定"-t"参数类似,但会假设修补数据的版本为新 版本。
rj r-D2a0 -F<监别列数>或--fuzz<监别列数>  设置监别列数的最大值。 ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台w:M%r7soS,[1}3y
 -g<控制数值>或--get=<控制数值>  设置以RSC或SCCS控制修补作业。 ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台 bk6}$_o(Et5x%w
 -i<修补文件>或--input=<修补文件>  读取指定的修补问家你。 ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台6k O)S G8V[ i)F&oz
 -l或--ignore-whitespace  忽略修补数据与输入数据的跳格,空格字符。 ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台'u/Y%h(^j\g
 -n或--normal  把修补数据解译成一般性的差异。
NGT{)lY-S0 -N或--forward  忽略修补的数据较原始文件的版本更旧,或该版本的修补数据已使 用过。 ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台@ n%^ r/Xj:q
 -o<输出文件>或--output=<输出文件>  设置输出文件的名称,修补过的文件会以该名称存放。 ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台zdWaiG2GM
 -p<剥离层级>或--strip=<剥离层级>  设置欲剥离几层路径名称。 ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台X%s3x.me
 -f<拒绝文件>或--reject-file=<拒绝文件>  设置保存拒绝修补相关信息的文件名称,预设的文件名称为.rej。
j6m t#m+j-BD0 -R或--reverse  假设修补数据是由新旧文件交换位置而产生。 ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台"A/F0g&BP}W D;_
 -s或--quiet或--silent  不显示指令执行过程,除非发生错误。 ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台q;~4D|l0k i5g
 -t或--batch  自动略过错误,不询问任何问题。
"U.S)D)GbZ0 -T或--set-time  此参数的效果和指定"-Z"参数类似,但以本地时间为主。
4Dh,e(np)x0 -u或--unified  把修补数据解译成一致化的差异。
2O7H2L/P2BGAk8P#Km0 -v或--version  显示版本信息。 ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台%|p:R]ko
 -V<备份方式>或--version-control=<备份方式>  用"-b"参数备份目标文件后,备份文件的字尾会被加上一个备份字符串,这个字符串不仅可用"-z"参数变更,当使用"-V"参数指定不同备份方式时,也会产生不同字尾的备份字符串。
dr'@ w;qd0 -Y<备份字首字符串>或--basename-prefix=--<备份字首字符串>  设置文件备份时,附加在文件基本名称开头的字首字符串。
'yr h7d XJZXrW0 -z<备份字尾字符串>或--suffix=<备份字尾字符串>  此参数的效果和指定"-B"参数类似,差别在于修补作业使用的路径与文件名若为src/linux/fs/super.c,加上"backup/"字符串后,文件super.c会备份于/src/linux/fs/backup目录里。
M"c-R Br&kGPH0 -Z或--set-utc  把修补过的文件更改,存取时间设为UTC。
h^i4|&ku_0 --backup-if-mismatch  在修补数据不完全吻合,且没有刻意指定要备份文件时,才备份文件。 ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台W `y.z:Y
 --binary  以二进制模式读写数据,而不通过标准输出设备。
5q1f!{{z OSWB0 --help  在线帮助。 ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台K1Druj
 --nobackup-if-mismatch  在修补数据不完全吻合,且没有刻意指定要备份文件时,不要备份文件。 ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台 k(Q[pD@ f N"X
 --verbose  详细显示指令的执行过程。
ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台+Vp-R Ow8g

ref:ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台1xK+nY;l'ltS{x

ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台%C)}B:M;NT'Uy!UIiluh

  http://linux.ccidnet.com/art/3067/20070418/1064163_1.htmlET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台0s [4l3L3KsIG:F

ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台(TL$mdL)H~

edit by: huang.makin@gmail.com

"pHh;apc+uF0

TAG:

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

Open Toolbar