Linux生成和打上patch的方法

转载 2017年01月03日 16:23:11

在团队开发的过程中,经常需要生成patch,或者打上别人提供的patch,那么一般情况是如何操作的呢。

首先生成patch需要有两个工程,一个修改前的A工程,一个修改后的B工程。

使用linux命令diff就可以生成patch了。格式如下:

diff -Naur path/to/A_Project  path/to/B_Project > Project.patch

   -N 选项确保补丁文件将正确地处理已经创建或删除文件的情况。

   -a 将所有文件都当作文本文件处理。

   -u 输出每个修改前后的3行,也可以用-u5等指定输出更多上下文。

   -r 递归。设置后diff会将两个不同版本源代码目录中的所有对应文件全部都进行一次比较,包括子目录文件。

生成patch以后,在修改前A工程根目录下使用patch命令打上patch。

$ cd path/to/A_Project
$ patch -p1 < Project.patch

    -p Num 忽略几层文件夹

为了解释 -p 参数,需要看看如下patch文件片段:

--- old/modules/pcitable       Mon Sep 27 11:03:56 1999                                          +++ new/modules/pcitable       Tue Dec 19 20:05:41 2000

如果使用参数 -p0,那就表示从当前目录找一个叫做old的文件夹,再在它下面寻找 modules/pcitable 文件来执行patch操作。
而如果使用参数 -p1,那就表示忽略第一层目录(即不管old),从当前目录寻找 modules 的文件夹,再在它下面找pcitable。

如果要取消补丁做出的更改,恢复旧版本,在A工程的根目录下执行以下命令,A工程就会恢复成没有打patch的样子:

$ patch -RE -p0 < Project.patch


由Git管理的工程处理patch的方法:

【生成patch】

分支master 上是没修改前的,分支patch 上是修改以后的打patch的。

1. 先切换到 patch分支

git checkout patch

2. 生成patch

git format-patch -M master

会生成一个文件名如:0002-Release-version-1.4.6.patch 的patch文件

【合并patch】

拿到patch以后,执行下面的命令:

git am 0002-Release-version-1.4.6.patch

如果不想直接commit,那么可以用下面这个命令打patch:

patch -p1 < 0002-Release-version-1.4.6.patch

然后手动commit。


Linux下生成patch和打patch

通过diff工具生成补丁, patch工具打上补丁. 在使用diff之前, 你需要保留一份未修改过的源码, 然后在其它地方修改源码的一份拷贝. diff对比这两份源码生成patch. 修改过的源...

如何制作LINUX的patch文件及如何打patch

如何制作LINUX的patch文件及如何打patch 对某个版本的Linux内核做了修改以后,如果希望发布出去给别人用,那么就需要制作针对此版本的patch文件。 patch文件也叫补丁,就是一个...

linux patch 命令小结

说到patch命令,就不得不提到diff命令,也就是制作patch的必要工具。diff命令,在制作patch文件的时候,基本上只需要使用到diff -Nau 这个参数,如果比较的是文件夹,还要加上...

linux下patch命令使用详解---linux打补丁命令

功能说明:修补文件。 语  法:patch [-bceEflnNRstTuvZ][-B ][-d ][-D ][-F ][-g ][-i ][-o ][-p ][-r ][-V ][-Y ][-...

Linux下patch打补丁命令

此命令用于为特定软件包打补丁,他使用diff命令对源文件进行操作。 基本命令语法: patch [-R] {-p(n)} [--dry-run] p:为path的缩写。 n:指将patch文件中的p...

linux下patch文件使用

初识patch还是和Z同事沟通问题时认识的,回想起已经近半年

生成和打上patch的方法

收藏 在团队开发的过程中,经常需要生成patch,或者打上别人提供的patch,那么一般情况是如何操作的呢。 首先生成patch需要有两个工程,一个修改...
  • cch___
  • cch___
  • 2016年11月30日 10:56
  • 1254

在公司的局域网使用git或github 设置代理

在公司这样的局域网环境中,向要走网络必须走HTTP代理出去。不能直接访问外面的服务,所以这样安全了些,但是也提供了不便的地方。因此需要设置一些代理才能使用。 常用的代理有: HTTP、HTTP...

GRUB启动过程分析 & GRUB 引导程序配置

计算机在启动的时候,首先由BIOS中的程序执行自检,自检通过后,就根据CMOS的配置找到第一个可启动磁盘的MBR中的Boot Loader程序(一般在启动盘的第一个物理扇区,占416字节),并把控...

如何为Linux生成和打上patch

通过diff工具生成补丁, patch工具打上补丁. 在使用diff之前, 你需要保留一份未修改过的源码, 然后在其它地方修改源码的一份拷贝. diff对比这两份源码生成patch. 修改过的源码必...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Linux生成和打上patch的方法
举报原因:
原因补充:

(最多只允许输入30个字)