diffpatch升级_Linux diff创建补丁以及patch打补丁
首先介紹一下diff和patch。在這里不會把man在線文檔上所有的選項都介紹一下,那樣也沒有必要。在99%的時間里,我們只會用到幾個選項。所以必須學會這幾個選項。
1、diff
--------------------
NAME
diff - find differences between two files
SYNOPSIS
diff [options] from-file to-file
--------------------
簡單的說,diff的功能就是用來比較兩個文件的不同,然后記錄下來,也就是所謂的diff補丁。
語法格式:
diff 【選項】 源文件(夾) 目的文件(夾)
就是要給源文件(夾)打個補丁,使之變成目的文件(夾),術語也就是“升級”。下面介紹三個最為常用選項:
-r 是一個遞歸選項,設置了這個選項,diff會將兩個不同版本源代碼目錄中的所有對應文件全部都進行一次比較,包括子目錄文件。
-N 選項確保補丁文件將正確地處理已經創(chuàng)建或刪除文件的情況。
-u 選項以統(tǒng)一格式創(chuàng)建補丁文件,這種格式比缺省格式更緊湊些。
常用命令,在某文件夾下,對比兩個文件(夾):
diff -urN ?[old_directory] ?[new_directory]
2、patch
------------------
NAME
patch - apply a diff file to an original
SYNOPSIS
patch [options] [originalfile [patchfile]]
but usually just
patch -pnum
------------------
簡單的說,patch就是利用diff制作的補丁來實現(xiàn)源文件(夾)和目的文件(夾)的轉換。這樣說就意味著你可以有源文件(夾)-->目的文件(夾),也可以目的文件(夾)-->源文件(夾)。下面介紹幾個最常用選項:
-p0 選項要從當前目錄查找目的文件(夾)
-p1 選項要忽略掉第一層目錄,從當前目錄開始查找。一般常用的命令是,在需要更新的文件夾下,輸入:
patch -p1 < ?[patch_file]
************************************************************
一些說明:
其一、關于參數(shù)p[num],常用的一般是p0和p1
--- old/modules/pcitable ? ? ? Mon Sep 27 11:03:56 1999
+++ new/modules/pcitable ? ? ? Tue Dec 19 20:05:41 2000
如果使用參數(shù)-p0,那就表示從當前目錄找一個叫做old的文件夾,在它下面尋找modules下的pcitable文件來執(zhí)行patch操作。
如果使用參數(shù)-p1, 那就表示忽略第一層目錄(即不管old),從當前目錄尋找modules的文件夾,在它下面找pcitable。這樣的前提是當前目 錄必須為modules所在的目錄。而diff補丁文件則可以在任意位置,只要指明了diff補丁文件的路徑就可以了。當然,可以用相對路徑,也可以用絕 對路徑。不過我一般習慣用相對路徑。
其二、patch文件的結構
補丁頭
補丁頭是分別由---/+++開頭的兩行,用來表示要打補丁的文件。---開頭表示舊文件,+++開頭表示新文件。
一個補丁文件中的多個補丁
一個補丁文件中可能包含以---/+++開頭的很多節(jié),每一節(jié)用來打一個補丁。所以在一個補丁文件中可以包含好多個補丁。
塊
塊是補丁中要修改的地方。它通常由一部分不用修改的東西開始和結束。他們只是用來表示要修改的位置。他們通常以@@開始,結束于另一個塊的開始或者一個新的補丁頭。
塊的縮進
塊會縮進一列,而這一列是用來表示這一行是要增加還是要刪除的。
塊的第一列
+號表示這一行是要加上的。
-號表示這一行是要刪除的。
沒有加號也沒有減號表示這里只是引用的而不需要修改。
總結
以上是生活随笔為你收集整理的diffpatch升级_Linux diff创建补丁以及patch打补丁的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 不安装cudnn可不可以_Ubuntu1
- 下一篇: python编程小知识_分享Python