製作原始碼補丁和給原始碼打補丁

2021-07-05 20:16:46 字數 2523 閱讀 7467

1. 製作原始碼補丁

假設原始的原始碼目錄為src_code,修改後的原始碼目錄為src_code_new。

通過如下命令,就可以製作出原始碼補丁檔案changes.patch。

changes.patch中記錄了src_code與src_code_new之間的差異。

[root@localhost ~]# diff  -urn    src_code  src_code_new   > changes.patch

2. 給原始碼打補丁

將原始的原始碼目錄src_code,複製乙份儲存為src_code_test。

然後,通過如下命令,將補丁changes.patch打到src_code_test中。

這樣一來,src_code_test與src_code_new的內容就完全一致了。

[root@localhost ~]# cp -rf  src_code   src_code_test

[root@localhost ~]# cd  src_code_test/

[root@localhost src_code_test]# patch  -p1   <../changes.patch 解析

--- prj0/prj0name       2006-08-18 09:25:11.000000000 +0800

+++ prj1/prj0name       1970-01-01 08:00:00.000000000 +0800

@@ -1,3 +0,0 @@

---------

-prj0/prj0name

---------

diff -unr prj0/prj1name prj1/prj1name

--- prj0/prj1name       1970-01-01 08:00:00.000000000 +0800

+++ prj1/prj1name       2006-08-18 09:26:36.000000000 +0800

@@ -0,0 +1,3 @@

+---------

+prj1/prj1name

+---------

diff -unr prj0/test0 prj1/test0

--- prj0/test0  2006-08-18 09:23:53.000000000 +0800

+++ prj1/test0  1970-01-01 08:00:00.000000000 +0800

@@ -1,3 +0,0 @@

-111111

-111111

-111111

diff -unr prj0/test1 prj1/test1

--- prj0/test1  1970-01-01 08:00:00.000000000 +0800

+++ prj1/test1  2006-08-18 09:26:00.000000000 +0800

@@ -0,0 +1,4 @@

+222222

+111111

+222222

+111111

[armlinux@lqm patch]$ ls

prj0  prj1  prj1.patch  test0  test1  test1.patch

[armlinux@lqm patch]$ cp prj1.patch ./prj0

[armlinux@lqm patch]$ cd prj0

[armlinux@lqm prj0]$ patch -p1 < prj1.patch 

patching file prj0name

patching file prj1name

patching file test0

patching file test1

[armlinux@lqm prj0]$ ls

prj1name  prj1.patch  test1

[armlinux@lqm prj0]$ patch -r -p1 < prj1.patch 

patching file prj0name

patching file prj1name

patching file test0

patching file test1

[armlinux@lqm prj0]$ ls

prj0name  prj1.patch  test0

-------------------

總結一下:

單個檔案

diff –un  from-file  to-file  >to-file.patch

patch –p0 < to-file.patch

patch –re –p0 < to-file.patch

多個檔案

diff –unr  from-docu  to-docu  >to-docu.patch

patch –p1 < to-docu.patch

patch –r –p1 reject

然後可以檢視reject的內容了。

diff和patch給原始碼做補丁

如果想要對兩個目錄下的所有檔案做diff,可以使用以下命令 diff burn org src dir target src dir patch file 其中 b可以忽略所有的空白行,r對所有的子目錄進行遞迴的操作。org src dir 是未經修改前的源檔案目錄,target src dir 是...

diff和patch給原始碼做補丁

如果想要對兩個目錄下的所有檔案做diff,可以使用以下命令 diff burn org src dir target src dir patch file 其中 b可以忽略所有的空白行,r對所有的子目錄進行遞迴的操作。org src dir 是未經修改前的源檔案目錄,target src dir 是...

diff製作補丁和patch打補丁

1 製作補丁 製作補丁使用diff命令 假設原始檔為 wx srcdir bak 目標檔案為 tmp new1 new2 srcdir 目標檔案是在原始檔基礎上的更新,更新之後想產生乙個補丁檔案。所謂補丁檔案,就是記錄下這兩個檔案的 異同。補丁檔案作用 公升級和備份。想做個備份為v1版本。如果把整個...