quilt用法
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
相關文章
- quiltUI
- with用法
- Qdrant用法;Qdrant在langchain裡的用法LangChain
- sessionStorage 用法Session
- WebSocket 用法Web
- SQLserver With As 用法SQLServer
- JavaScript用法JavaScript
- requestAnimationFrame用法requestAnimationFrame
- requestAnimationFrame()用法requestAnimationFrame
- JavaScript this用法JavaScript
- WITH AS 用法-CTE
- ORACLE WITH AS 用法Oracle
- dvbsnoop用法OOP
- ioctlsocket() 用法TLS
- seqkit用法
- GPG 用法
- typedef用法
- union用法
- Yii2-application用法 (Yii::$app用法)APP
- SQL AS 的用法SQL
- rsync 用法教程
- SUBMIT 的用法MIT
- Vue 元件用法Vue元件
- Promise基本用法Promise
- indexOf()的用法Index
- URLSearchParams 物件用法物件
- vue --ref用法Vue
- Promise 用法解析Promise
- Go 中 ...用法Go
- Laravel scope用法Laravel
- jQuery $.each用法jQuery
- vue slot 用法Vue
- Git基本用法Git
- SVG <markers>用法SVG
- JavaScript delete用法JavaScriptdelete
- phpstrtr()用法PHP
- git reset 用法Git
- RewriteRule QSA用法