quilt用法

小馬哥黑客發表於2017-02-10

1. 建立測試檔案hello.c,初始內容如下:

#include <stdlib.h>
#include <stdio.h>

void main(char* args){
 printf("Hello world!");
}

2. 安裝 quilt: 
 #sudo apt-get install quilt;
 
3. 生成一個patch:
 #sudo quilt new hello.patch

4. 在當前目錄下檢視生成了什麼?
 #ls -a
 . .. hello.c patches .pc
 
 其中 patches 目錄下 有一個 series 檔案, 用vi 檢視發現裡面記錄了 hello.patch; .pc是由quilt自己維護的,我們不用管。
 
5. 用 quilt top 命令可以檢視最近的一個patch, 當前只有一個patch: hello.patch
 #quilt top
 hello.patch

此處最好執行命令quilt push -a

6. 生成patch的目的是為了為現有程式碼檔案(hello.c)打補丁,但又不是直接在hello.c上修改,因此需要將補丁檔案(hello.patch)與程式碼檔案(hello.c)進行關聯。
   這個關聯用的是 quilt add 命令:
  #quilt add hello.c
  注:因為當前最top的patch是hello.patch,因此hello.c關聯的就是hello.patch

7. 現在對hello.c做點修改,看看能不能把修改作用到patch裡面去,修改的命令是 quilt edit:
  #quilt edit hello.c
  注:選擇nano作為修改編輯器,在printf語句後面加入註釋,如下:
   #include <stdlib.h>
  #include <stdio.h>
  
  void main(char* args){
   printf("Hello world!");   // just add comment
  }

8. 用quilt refresh 將改動儲存到patch中:
  #quilt refresh
  注:執行 quilt refresh以後,可以發現在 patches 目錄下生成了一個新的檔案:hello.patch,那正是我們修改hello.c以後生成的補丁檔案。
 
9. 檢視hello.patch內容:
  #cat patches/hello.patch
 
  發現變化如下:
  ...
  -      printf("Hello world!");
  +       printf("Hello world!");   // just add comment
  ...
 
  這說明hello.patch記錄了此次我們對hello.c的改動。

10. 如果要回退剛才的改動,執行 quilt pop:
 #sudo quilt pop
 注:再次檢視hello.c的內容,會發現hello.c確實回到了最初的內容。
 
11. 檢視已經應用的patch, 執行 quilt applied:
 #sudo quilt applied
 No patches applied
 
 檢視未應用的patch, 執行 quilt unapplied:
 #sudo quilt applied
 hello.patch

12. 重新應用剛才的改動,執行 quilt push:
 #sudo quilt push
 
13. 檢視已經應用的patch, 執行 quilt applied:
 #sudo quilt applied
 hello.patch
 
14. 檢視與當前patch關聯的檔案,執行 quilt files:
 #sudo quilt files
 hello.c
 
15. 從原始碼找與之關聯的patch,執行 quilt patches xxxx
  #sudo quilt patches hello.c
  hello.patch
 

轉載自:http://blog.csdn.net/hbsong75/article/details/8825184