精华内容
下载资源
问答
  • apatch补丁文件

    2017-03-12 12:04:55
    apatch补丁文件
  • 【知识点】patch补丁文件格式

    千次阅读 2016-06-17 16:22:03
    补丁文件示例 --- ../a.txt 2016-06-17 15:53:27.377843924 +0800 +++ ../b.txt 2016-06-17 16:05:59.039229326 +0800 @@ -1,9 +1,12 @@ -q -w -e +a +s +d x y z -e -w -q +d +s +a +1 +

    linux补丁文件格式

    “补丁” 指的是文件之间一系列差异。

    在原始文件的基础上进行修改后,然后根据所做的修改生成补丁文件(使用diff命令)。

    一个持有原始文件的人,将该补丁打到原始文件上(使用patch命令),就变成了修改后的文件。

    1. 创建两个实验文件

    • 原文件:1.txt
    this is a test
    for patch file format
    so let us go!
    
    • 修改后的文件:2.txt
    this is a test
    for linux patch file format
    so let us go!
    learn it
    

    2. 生成补丁文件

    diff -u 1.txt 2.txt > diff.patch
    
    vim diff.patch
    

    生成的补丁文件内容如下:

    1 --- 1.txt       2020-07-20 16:45:27.131654289 +0800
    2 +++ 2.txt       2020-07-20 16:46:26.348728016 +0800
    3 @@ -1,3 +1,4 @@
    4  this is a test
    5 -for patch file format
    6 +for linux patch file format
    7  so let us go!
    8 +learn it
    

    3.补丁头

    1 --- 1.txt       2020-07-20 16:45:27.131654289 +0800
    2 +++ 2.txt       2020-07-20 16:46:26.348728016 +0800
    

    “—” 表示旧文件(原文件)

    “+++” 表示新文件(修改后的文件)

    补丁头记录了原始文件和修改后的文件的文件名和创建时间。

    4.块

    补丁中的块是用来说明文件的改动情况。他们通常以@@开始,结束于另一个块的开始或者一个新的补丁头

    3 @@ -1,3 +1,4 @@
    4  this is a test
    5 -for patch file format
    6 +for linux patch file format
    7  so let us go!
    8 +learn it
    

    5.块的缩进

    3 @@ -1,3 +1,4 @@
    4  this is a test
    5 -for patch file format
    6 +for linux patch file format
    7  so let us go!
    8 +learn it
    

    块会缩进一列,该列有三种情况:

    • 以 “-” 开头的行,表示改行只在原始文件中存在,比如第5行

    • 以 “+” 开头的行,表示改行只在修改后的文件中存在,比如第6行和第8行

    • 以空格开头的行,表示改行在原始文件和修改后的文件中都存在,比如第4行和第7行

    从打补丁的角度来看,这一列是用来表示这一行是要增加还是要删除的;

    • 以 “-” 开头的行是要删除的

    • 以 “+” 开头的行是要加上的

    • 以空格开头的行保持不变

    更多精彩内容,请关注微信公众号“边缘智能实验室”

    在这里插入图片描述

    展开全文
  • patch 补丁文件制作

    2014-11-08 15:46:52
     用来比较文件,目录,也可以用来制作补丁文件.  -u: 在比较结果中输出上下文一些相同的行,利于人工定位  -r : 递归比较各个子目录下的文件  -N: 将不存在的文件作空文件处理  -b: 忽略空白处的改变  ...

    1、网上下载u-boot-1.1.6.tar.bz2;

    2、解压到跟目录下 tar -jxvf u-boot-1.1.6.tar.bz2 -C / ;

    3、到跟目录下 复制一个自己的 文件,我这里是u-boot-1.1.6-mini2440;

          cp -r u-boot-1.1.6 u-boot-1.1.6-mini2440

         

    4、在自己的文件里( u-boot-1.1.6-mini2440)做相关的修改;

    5、生成补丁文件:

          

       diff
       用来比较文件,目录,也可以用来制作补丁文件.
       -u: 在比较结果中输出上下文一些相同的行,利于人工定位
       -r : 递归比较各个子目录下的文件
       -N: 将不存在的文件作空文件处理
       -b: 忽略空白处的改变
       -w: 忽略对空格的比较
       -B: 忽略对空行的比较


    展开全文
  • patch补丁文件里的@@是什么意思比如@@ -31,17 +31,8 @@
  • patch是用来查找文件之间差异的GNU diff命令的一个接口;diff有很多选项,但是该命令最常用的用途是用来生成一个文件,该文件中列出了内容发生改变的行,显示两个原始文件、修改过的 行以及由于内容没有变化而忽略掉...
    本文的目的是向Linux新手介绍一种无价的资源,Larry Wall的patch程序。patch是用来查找文件之间差异的GNU diff命令的一个接口;diff有很多选项,但是该命令最常用的用途是用来生成一个文件,该文件中列出了内容发生改变的行,显示两个原始文件、修改过的 行以及由于内容没有变化而忽略掉的行。

    patch典型地用于把一个目录下的源代码文件更新到新的版本,从而就避免了下载整个新的源代码档案的必要。

    diff 和 patch 是相辅相成的, diff命令产生patch文件, 由patch命令解析执行。

    先介绍diff
    diff的功能就是用来比较两个文件的不同,然后记录下来,也就是所谓的diff补丁。


    格式 : diff[参数][文件1或目录1][文件2或目录2]


    参数 : 这里只提几个能和patch一起使用的
    -a或--text  diff预设只会逐行比较文本文件。
    -N或--new-file  在比较目录时,若文件A仅出现在某个目录中,预设会显示:Only in目录:文件A若使用-N参数,则diff会将文件A与一个空白的文件比较。
    -r或--recursive  比较子目录中的文件。
    -u,-U或--unified=  以合并的方式来显示文件内容的不同。
    -c  显示全部内文,并标出不同之处。

    一般就使用  -Nur
    产生patch文件
    命令diff A B >C ,一般A是原始文件,B是修改后的文件,C称为A的补丁文件。

    不加任何参数生成的diff文件格式是一种简单的格式,这种格式只标出了不一样的行数和内容。我们需要一种更详细的格式,可以标识出不同之处的上下文环境,这样更有利于提高patch命令的识别能力。这个时候可以用-c开关。

    patch 命令用于打补丁,补丁文件是使用diff产生的
    patch就是利用diff制作的补丁来实现源文件(夹)和目的文件(夹)的转换。这样说就意味着你可以有源文件(夹)――>目的文件(夹),也可以目的文件(夹)――>源文件(夹)。

    patch 命令语法

    patch [  -b [ -B Prefix ] ] [  -f ] [ -l ] [ -N ] [ -R ] [  -s ] [  -v ] [  -c | -e | -n ] [  -d Directory ] [  -D Define ] [  -F Number ] [  -i PatchFile ] [  -o OutFile ] [  -p Number ] [  -r RejectFile ] [  -x Number ] [ File ]

    -p0 选项要从当前目录查找目的文件(夹)
    -p1 选项要忽略掉第一层目录,从当前目录开始查找。
    以此类推

    -E 选项说明如果发现了空文件,那么就删除它
    -R 选项说明在补丁文件中的“新”文件和“旧”文件现在要调换过来了(实际上就是给新版本打补丁,让它变成老版本)


    关于版本控制, 还有一个非常常用的工具 ---- git
    不过在git中,我们没有必要直接使用diff和patch来做补丁,这样做既危险又麻烦。
    git提供了两种简单的patch方案。一是用git diff生成的标准patch,二是git format-patch生成的Git专用Patch。

    这里就不介绍git的用法,网上有大量的资料。我的博客里也有相关介绍。

    一 用git diff生成的标准patch
    git diff产生标准的diff文件,可以用来产生patch 文件。

    例如在master 分支有 a.txt文件

    git checkout -b p1 /// 产生一个新分支p1
    echo 'abcd' >> a.txt ///
    git commit -am "patch p1" /// 产生变化并提交

    git diff master  > patch /// 将当前分支与master分支比较,并产生patch文件
    git checkout master
    git checkout -b p2 /// 产生一个与master相同的分支p2
    git apply patch /// 运用patch 文件

    git diff p1 /// 此时p1和p2分支相同了。

    这里注意, 
    1. 用 git diff [分支名,默认是master] > patch 产生补丁(patch)文件。
    用 git apply <补丁文件>, 来打补丁。
    2. 在那个目录做补丁文件, 就在那个目录应用补丁文件。

    二 git format-patch生成的git专用补丁

    在对应分支中

    git format-patch -M master /// -M 表示要比较的分支

    会产生一个 .patch文件
    不仅有diff的信息,还有提交者,时间等等,仔细一看你会发现,这是个E-mail的文件,你可以直接发送它!这种patch,我们要用git am来应用。

    git am xxxx.patch

    (1)兼容性:很明显,git diff生成的Patch兼容性强。如果你在修改的代码的官方版本库不是Git管理的版本库,那么你必须使用git diff生成的patch才能让你的代码被项目的维护人接受。
    (2)除错功能:对于git diff生成的patch,你可以用git apply --check 查看补丁是否能够干净顺利地应用到当前分支中;如果git format-patch 生成的补丁不能打到当前分支,git am会给出提示,并协助你完成打补丁工作,你也可以使用git am -3进行三方合并,详细的做法可以参考git手册或者《Progit》。从这一点上看,两者除错功能都很强。
    (3)版本库信息:由于git format-patch生成的补丁中含有这个补丁开发者的名字,因此在应用补丁时,这个名字会被记录进版本库,显然,这样做是恰当的。因此,目前使用Git的开源社区往往建议大家使用format-patch生成补丁。


    目前先总结这么多。

























    展开全文
  • patch补丁文件制作 使用和常见问题

    千次阅读 2015-07-27 15:43:25
    1. 给源码树加 patch 进入源码树的根目录下: cd SRC_DIR patch -p 1 -p 1 指定忽略的目录个数,如你的patch头为 diff -urN orig/include/linux/module.h tgt/include/linux/module.h,则是对 $SRC_DIR/ ...
    1. 给源码树加 patch

    进入源码树的根目录下:

    cd SRC_DIR
    patch -p 1 < /path/to/your/patch

    -p 1 指定忽略的目录个数,如你的patch头为 diff -urN orig/include/linux/module.h tgt/include/linux/module.h,则是对 $SRC_DIR/ 下的 include/linux/modue.h 应用该patch

    -p 2 则是对$SRC_DIR/ 下的 linux/modue.h 应用该 patch


    2. 移去加入的 patch

    cd SRC_DIR
    patch -R -p1 </path/to/your/patch


    3. 模拟打补丁

    有时我们需要测试一下,自己生成patch 能否正确的应用到目标源码树下而没有冲突,则:

    patch --dry-run -p1 < /path/to/your/patch


    4. 常见错误

    patch: **** malformed patch at line 129

    出现这中错误,一般是 patch 生成后被手工修改了,如下的patch:

    diff -urN a/include/asm-mips/module.h b/include/asm-mips/module.h
    --- a/include/asm-mips/module.h 1970-01-01 00:00:00.000000000 +0000
    +++ b/include/asm-mips/module.h 2008-01-03 16:51:23.000000000 +0000
    @@ -104,6 +104,8 @@
    #define MODULE_PROC_FAMILY "NEVADA "
    #elif defined CONFIG_CPU_R8000
    #define MODULE_PROC_FAMILY "R8000 "
    +#elif defined CONFIG_CPU_R9721
    +#define MODULE_PROC_FAMILY "R9721"
    #elif defined CONFIG_CPU_R10000
    #define MODULE_PROC_FAMILY "R10000 "
    #elif defined CONFIG_CPU_RM7000


    数字6,表示记录了6行原始文件,数字8表示记录了8行目标文件

    如果你这时手工加了一行:

    @@ -104,6 +104,8 @@
    #define MODULE_PROC_FAMILY "NEVADA "
    #elif defined CONFIG_CPU_R8000
    #define MODULE_PROC_FAMILY "R8000 "
    +#elif defined CONFIG_CPU_R9721
    +#define MODULE_PROC_FAMILY "R9721"
    +#define MODULE_PROC_ABC "ABC"
    #elif defined CONFIG_CPU_R10000
    #define MODULE_PROC_FAMILY "R10000 "
    #elif defined CONFIG_CPU_RM7000

    这是你应用这个补丁,patch 就会提示失败,并输出:

    patch: **** malformed patch at line xxx

    应用时,patch 都会检查受影响的行是否与记录在两个 @@ 之间的数值一致,手工加一行后,记录的目标文件行数为9,因此patch会失败。

    将@@ -104,6 +104,8 @@ 改为@@ -104,6 +104,9 @@ 即可成功打上patch

    展开全文
  • patch diff 补丁文件

    2018-04-15 14:05:24
    diff 和 patch 是一对工具,使用这对工具可以获取更新文件与历史文件的差异,并将更新应用到历史文件上。在数学上说,diff就是对两个集合的差运算,patch就是对两个集合的和运算。在数学上我们知道: A - B = C, ...
  • 文章目录前言一、patch补丁的文件格式两个文件旧文件 hello.c修改后的新文件 hello_world.c生成补丁文件解释格式二、patch补丁的使用1.diff参数2.patch 使用方法总结 前言 在看韦东山老师的视频的时候(12期衔接...
  • diff制作patch补丁

    2019-09-09 09:42:45
    diff制作patch补丁 对于源代码项目软件移植的时候,会出现各种各样的问题,系统环境不匹配,版本升级,环境依赖等问题,需要制作补丁,打在源代码项目中,修复bug问题。 diff命令 使用diff命令制作patch补丁 ,diff...
  • git制作patch补丁

    千次阅读 2019-09-19 11:49:16
    git制作patch补丁 使用git对项目进行管理,可以生成patch补丁。git diff生成标准的补丁,git format-patch生成git专用的commit号补丁。
  • 目录 1.概述 2.使用diff对比单个文件差异 3.diff命令常用选项: 4.使用patch命令对单文件代码打补丁 ...在Linux系统中diff命令可以为我们生成补丁文件,然后使用patch命令为有问题的程序代码打补丁。 2....
  • patch补丁

    2013-05-08 19:14:23
    工具1:diff diff - find differences between ...简单的说,diff的功能就是用来比较两个文件的不同,然后记录下来,也就是所谓的diff补丁。 语法格式:diff 【选项】 源文件(夹) 目的文件(夹),就是要给源文件
  • NC云管家补丁是.patch加密文件,此工具可以直接解密为ZIP压缩文件 说明:这是用exe4j打包的java运行程序,需要1.7的jdk,高版本的jdk没试过,环境变量有jdk或者把jdk放到exe同目录就可以直接双击运行了
  • u-boot2010.06最新移植patch补丁和bin文件. 功能齐全,支持USB、SD、串口、tftp下载,nfs挂载
  • patch补丁用法

    千次阅读 2013-09-09 16:14:16
    打开补丁文件(xxx.patch)看内容 diff --git a/arch/arm.... b/arch/arm.... 你会看到如上的文字,表示补丁修改的路径。注意a和b是不必要的路径。而arch/arm是linux内核的路径,是必须的。   第二步 输入...
  • patch补丁命令

    2014-06-26 17:39:36
    patch 命令使用 patch 命令用于打补丁,补丁文件是使用diff产生的 patch 命令语法 patch [ -b [ -B Prefix ] ] [ -f ] [ -l ] [ -N ] [ -R ] [ -s ] [ -v ] [ -c | -e | -n ] [ -d Directory ] [ -D Define ] [ -...
  • PATCH补丁工具 .rar

    2020-04-06 15:46:40
    简单的易语言程序,仅供学习交流,为初学者提供的补丁程序,方便写入文件,支持动态补丁,特征码补丁,支持寄存器hook功能全面
  • 补丁patch -p0 < xxx.patchpatch -p0 old_file xxx.patch补丁patch -RE -p0 < xxx.patch 文件夹方式 制作补丁:diff -urN old_dir new_dir > xxx.patch补丁patch -p1 < …/xxx.patch ...
  • NC云管家补丁是.patch加密文件,此工具可以直接解密为ZIP压缩文件 说明: 1、这是用exe4j打包的java运行程序,需要1.7的jdk,高版本的jdk没试过,环境变量有jdk或者把jdk放到exe同目录就可以直接双击运行了; 2、执行...
  • patch 补丁制作方法

    千次阅读 2019-08-16 10:16:08
    补丁制作方法: diff -uNr A B >...C是生成的补丁文件:linux-2.6.31_xxx.pacth diff[选项] 源文件 目标文件 -r 当比较目录时,递归比较任何找到的子目录. -u使用统一的输出格式. -N --new-file在目...
  • Linux patch补丁

    2013-02-16 10:32:26
    1、使用diff创建补丁test1.patch [armlinux@lqm patch]$ diff -uN test0 test1 > test1.patch 【注:因为单个文件,所以不需要-r选项。选项顺序没有关系,即可以是-uN,也可以是-Nu。】 [armlinux@lqm patch]$ ls...
  • Visual Assist X 10.6.1845.0 & patch 安装文件 + 破解补丁 VA_X_Setup1845.exe VA_X_Setup1845_Patch.exe
  • Linux使用quilt工具制作补丁文件前言一、安装quilt工具二、一个需要被打补丁的文件三、quilt new命令创建初始补丁文件四、quilt add命令添加目标文件五、修改目标文件代码内容六、quilt refresh命令生成补丁文件七、...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 39,050
精华内容 15,620
关键字:

patch补丁文件