字型: 小 中 大 | 列印
原文今天上qq的時候發現eva不能用了,後來又看到了解決方法,所以想打個補丁,只是不會:-)。後來查了查明確了,寫了個總結,分享一下,也不知道曾經有沒有這方面的東西,希望我這個不是多餘的。
建立補丁檔案:
code:
diff -naur 舊的資料夾 新的資料夾 > patch檔案
或者diff -naur 舊的檔案 新的檔案 > patch檔案
對於檔案夾層數的一些限制
在建立patch的時候資料夾的層數應當是一樣的,比方
code:
--- old/modules/pcitablemon sep 27 11:03:56 1999
+++ new/modules/pcitabletue dec 19 20:05:41 2000
這樣是能夠的。
而code:
--- old/try1/other/modules/pcitablemon sep 27 11:03:56 1999
+++ new/modules/pcitabletue dec 19 20:05:41 2000
這樣做可能會有一些問題。
怎樣使用patch
對於乙個patch檔案,有兩種經常使用用法:
1.code:
cat new-patch | patch -p02.
2、code:
patch -p0 < new-patch
patch命令裡面的層數(-p0?-p1?)
引數-p來指定從第幾層開始比較。比方有乙個patch檔案的補丁頭是這種:
code:
--- old/modules/pcitablemon sep 27 11:03:56 1999
+++ new/modules/pcitabletue dec 19 20:05:41 2000
假設使用引數-p0,就表示從當前資料夾,找乙個叫作new的資料夾,在它以下找乙個叫modules的資料夾,再在它以下找乙個叫pcitablemon的資料夾。
假設使用引數-p1,就表示忽略第一層,從當前資料夾找乙個叫modules的資料夾,在它以下找乙個叫modules的資料夾。這樣會忽略掉補丁頭提到的new資料夾。
依此類推。
patch檔案的結構
補丁頭補丁頭是分別由---/+++開頭的兩行,用來表示要打補丁的檔案。
乙個補丁檔案裡的多個補丁
乙個補丁檔案裡可能包括以---/+++開頭的非常多節,每一節用來打乙個補丁。所以在乙個補丁檔案裡能夠包括好多個補丁。
塊塊是補丁中要改動的地方。它通常由一部分不用改動的東西開始和結束。他們僅僅是用來表示要改動的位置。他們通常以@@開始,結束於還有乙個塊的開始或者乙個新的補丁頭。
塊的縮排
塊會縮排一列,而這一列是用來表示這一行是要新增還是要刪除的。
塊的第一列
+號表示這一行是要加上的。
-號表示這一行是要刪除的。
沒有加號也沒有減號表示這裡僅僅是引用的而不須要改動。
乙個patch的樣例
code:
diff -u old/modules/pcitable new/modules/pcitable
--- old/modules/pcitablemon sep 27 11:03:56 1999
+++ new/modules/pcitabletue dec 19 20:05:41 2000
@@ -1,4 +1,6 @@
0x0e110xae10"cpqarray""compaq|smart-2/p raid controller"
+0x10000x0010"cpqarray""compaq|integrated array controller"
+0x10110x0046"cpqarray""compaq|smart-2/p raid controller"
0x0e110xae32"tlan""compaq|netelligent 10/100"
0x0e110xae34"tlan""compaq|netelligent 10"
0x0e110xae35"tlan""compaq|integrated netflex-3/p"
@@ -21,6 +23,7 @@
0x10000x000f"ncr53c8xx""symbios|53c875"
0x10000x0012"ncr53c8xx""symbios|53c895a"
0x10000x008f"ncr53c8xx""symbios|53c875j"
+0x10000x000a"sym53c8xx""symbios|53c1510"
0x10000x0701"yellowfin""symbios|83c885 gigabit ethernet"
0x10000x0702"yellowfin""symbios|yellowfin g-nic gigabit ethernet"
0x10110x0001"tulip""dec|decchip 21050"
--- old/usr/share/kudzu/pcitablesun sep 26 17:11:23 1999
+++ new/usr/share/kudzu/pcitabletue dec 19 20:05:41 2000
@@ -15,6 +15,8 @@
0x0e110x3034"unknown""compaq|qvision 1280/p"
0x0e110x4000"unknown""compaq|4000 [triflex]"
0x0e110xa0f3"ignore""compaq|triflex pci to isa bridge"
+0x10000x0010"cpqarray""compaq|integrated array controller"
+0x10110x0046"cpqarray""compaq|smart-2/p raid controller"
0x0e110xae10"cpqarray""compaq|smart-2/p raid controller"
0x0e110xae29"unknown""compaq|mis-l"
0x0e110xae2a"unknown""compaq|mpc"
@@ -46,6 +48,7 @@
0x10000x000f"ncr53c8xx""symbios|53c875"
0x10000x0012"ncr53c8xx""symbios|53c895a"
0x10000x008f"ncr53c8xx""symbios|53c875j"
+0x10000x000a"sym53c8xx""symbios|53c1510"
0x10000x0701"yellowfin""symbios|83c885 gigabit ethernet"
0x10000x0702"yellowfin""symbios|yellowfin g-nic gigabit ethernet"
0x10000x0901"unknown""symbios|61c102"
分析這個樣例是由命令
code:
diff -u old/modules/pcitable new/modules/pcitable
使用和製作patch檔案
字型 小 中 大 列印 原文今天上qq的時候發現eva不能用了,後來又看到了解決方法,所以想打個補丁,只是不會 後來查了查明確了,寫了個總結,分享一下,也不知道曾經有沒有這方面的東西,希望我這個不是多餘的。建立補丁檔案 code diff naur 舊的資料夾 新的資料夾 patch檔案 或者dif...
patch補丁檔案製作 使用和常見問題
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 mod...
Linux下使用diff和patch製作及打補丁
diff 是對兩個集合的差運算 patch 是對兩個集合的和運算 diff a b c表達了c a b a 表達了原始檔案,b 表示修改後的檔案。c 表示補丁檔案 由於歷史原因,diff有三種格式 正常格式 normal diff 上下文格式 context diff 合併格式 unified di...