project patch
2011年11月3日 星期四 by Anati
diff 和patch是在opensource project常常用到的工具,這裡介紹一下流程和用法
* 建立project
myproject
-> config -> address.inc
-> main.c
* 修改project
> cp -rfv myproject myproject.orig
> cd myproject (開始進行修改)
* 建立差異檔 use diff
> cd .. (離開myproject目錄,此時可看到myproject 與myproject.orig兩目錄同時存在)
此時分辨一下 myproject 是修改完,所以是新的,而myproject.orig則是舊的
> diff -urN myproject.orig myproject > myproject.patch (注意,是從舊到新,不能寫反)
> cat myproject.patch 看一下內容
* 將myproject.patch分享給別人讓別人套用更新
當其實使用者拿到此patch檔的時候,他將要為他的myproject打上更新,因此在目錄下會存在
home
-> myproject/
-> myproject.patch
與我們建新patch時相同的目錄結構
* 打上myproject.patch更新
> patch -p0 < myproject.patch
* 注意
經過以上流程就已可以打上更新了,但是常常有人會失敗,可能的原因有目錄 錯誤或是-p?路徑不正確,建議使用者可以看一下myproject.patch檔案內容
+++ myproject/doc/README 2011-11-03 18:19:15.000000000 +0800
我們要將舊的myproject更新成新的,因此若要使用-p0的話那myproject.patch目錄下也要存在有一個叫myproject目錄,如此可以正確的打上patch
* 建立project
myproject
-> config -> address.inc
-> main.c
* 修改project
> cp -rfv myproject myproject.orig
> cd myproject (開始進行修改)
* 建立差異檔 use diff
> cd .. (離開myproject目錄,此時可看到myproject 與myproject.orig兩目錄同時存在)
此時分辨一下 myproject 是修改完,所以是新的,而myproject.orig則是舊的
> diff -urN myproject.orig myproject > myproject.patch (注意,是從舊到新,不能寫反)
> cat myproject.patch 看一下內容
diff -urN myproject.orig/doc/README myproject/doc/README
--- myproject.orig/doc/README 1970-01-01 08:00:00.000000000 +0800
+++ myproject/doc/README 2011-11-03 18:19:15.000000000 +0800
@@ -0,0 +1 @@
+this is a diff,patch test
diff -urN myproject.orig/main.c myproject/main.c
--- myproject.orig/main.c 2011-11-03 18:18:25.000000000 +0800
+++ myproject/main.c 2011-11-03 18:18:41.000000000 +0800
@@ -1,6 +1,8 @@
#include
+#include
int main()
{
puts("hello world");
+ return 0;
}
* 將myproject.patch分享給別人讓別人套用更新
當其實使用者拿到此patch檔的時候,他將要為他的myproject打上更新,因此在目錄下會存在
home
-> myproject/
-> myproject.patch
與我們建新patch時相同的目錄結構
* 打上myproject.patch更新
> patch -p0 < myproject.patch
* 注意
經過以上流程就已可以打上更新了,但是常常有人會失敗,可能的原因有目錄 錯誤或是-p?路徑不正確,建議使用者可以看一下myproject.patch檔案內容
+++ myproject/doc/README 2011-11-03 18:19:15.000000000 +0800
我們要將舊的myproject更新成新的,因此若要使用-p0的話那myproject.patch目錄下也要存在有一個叫myproject目錄,如此可以正確的打上patch