patch和diff

984 views

Published on

patch和diff—修補bug與回報
2011/5/18晚上於WoFOSS第八次聚會

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
984
On SlideShare
0
From Embeds
0
Number of Embeds
11
Actions
Shares
0
Downloads
7
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

patch和diff

  1. 1. patch和diff— 修補bug與回報 依瑪貓 / 楊士青 <imacat@mail.imacat.idv.tw> 2011-05-18
  2. 2. 「 patch 和 diff 」簡報由 依瑪貓╱楊士青 製作, 以 創用CC Attribution-ShareAlike 3.0 Unported 授權條款 釋出。
  3. 3. 先期準備 sudo apt-get install build-essential
  4. 4. 要用到的工具是 patch 和 diff
  5. 5. 網路上下載到的patch 檔,如何使用?
  6. 6. patch: 由STDIN 讀入要patch的資料
  7. 7. 第一種 沒有路徑的patch檔
  8. 8. --- sum.c.org 2011-05-18 18:04:53.808732274 +0800 +++ sum.c 2011-05-18 18:07:07.768294713 +0800 @@ -26,7 +26,7 @@ main (int argc, char** argv) { int max; - printf (&quot; 請書入最大值: &quot;); + printf (&quot; 請輸入最大值: &quot;); scanf (&quot;%d&quot;, &max); printf (&quot;1 加到 %d 是 %d 。 n&quot;, max, sum (max)); return 0; (續下)
  9. 9. (承上) @@ -36,7 +36,7 @@ sum (int max) { int i, sum; - for (i = 1, sum = 0; i < max; i++) + for (i = 1, sum = 0; i <= max; i++) { sum += i; }
  10. 10. % tar xzf sum-1.0.0.tar.gz % cd sum-1.0.0 % patch < ../sum.patch
  11. 11. 適用在只有一個檔案的情形。
  12. 12. 第二種 有路徑的 patch 檔
  13. 13. diff -r -u sum-1.0.0.org/sum.c sum-1.0.0/sum.c --- sum-1.0.0.org/sum.c 2011-05-18 18:04:53.000000000 +0800 +++ sum-1.0.0/sum.c 2011-05-18 18:09:10.412083908 +0800 @@ -26,7 +26,7 @@ main (int argc, char** argv) { int max; - printf (&quot; 請書入最大值: &quot;); + printf (&quot; 請輸入最大值: &quot;); scanf (&quot;%d&quot;, &max); printf (&quot;1 加到 %d 是 %d 。 n&quot;, max, sum (max)); return 0; (續下)
  14. 14. (承上) @@ -36,7 +36,7 @@ sum (int max) { int i, sum; - for (i = 1, sum = 0; i < max; i++) + for (i = 1, sum = 0; i <= max; i++) { sum += i; }
  15. 15. % tar xzf sum-1.0.0.tar.gz % cd sum-1.0.0 % patch -p 1 < ../sum.patch
  16. 16. 適用在一整個目錄很多檔案修改的情形。
  17. 17. 如何回饋自由軟體專案?
  18. 18. 最簡單的方法: 修補bug,製作patch回報
  19. 19. 第一種patch
  20. 20. % cp sum.c sum.c.org % ...( 修補 ) * diff -u sum.c.org sum.c > sum.patch
  21. 21. diff的參數: -u:以patch的格式輸出。
  22. 22. 第二種 patch
  23. 23. % cp sum-1.0.0 sum-1.0.0.org % ...( 修補 ) * diff -u -r sum-1.0.0.org sum-1.0.0 > sum-1.0.0.patch
  24. 24. diff的參數: -r:recursive,深入目錄比對。
  25. 25. 如果修正的時候,有新增檔案呢?
  26. 26. % cp sum-1.0.0 sum-1.0.0.org % ...( 修補 ) % echo 'Type &quot;make&quot; to compile.' > sum-1.0.0/README * diff -u -r -N sum-1.0.0.org sum-1.0.0 > sum-1.0.0.patch
  27. 27. diff的參數: -N:new file,多出來的檔當成新檔。
  28. 28. 問題與討論

×