我想從特定gcc
分支創建一個補丁,將其與官方版本進行比較;因此,當我從穩定版本中解壓縮 tarball 時,我可以應用補丁並獲得與該特定分支中的內容相同的內容。
這是我第一次需要創建補丁,所以這是我第一次這樣做,我主要關心的是獲得正確的選項和解析,因為我們正在談論一個極其重要的軟體
diff -crB GccStable GccGit > /tmp/fromStabletoBranch.patch
這足夠並且是最好的方法嗎?
答案1
是的,這是創建補丁的好方法。
簡而言之:
若要為單一檔案建立補丁,您的命令可能如下所示
diff -Naru file_original file_updated > file.patch
在哪裡
-N
:將不存在的文件視為空白文件-a
:將所有文件視為文本-r
:遞歸比較找到的任何子目錄-u
:輸出 NUM(預設 3)行統一上下文
為整個目錄建立補丁:
diff -crB dir_original dir_updated > dfile.patch
在哪裡
-c
:輸出 NUM(預設 3)行複製的上下文-r
:遞歸比較任何子目錄-B
:忽略行全部空白的更改
畢竟應用這個補丁就可以運行
patch -p1 --dry-run < dfile.patch
其中 switchp
指示 patch 移除路徑前綴,以便正確識別檔案。大多數情況下應該是這樣1
。
--dry-run
如果您對螢幕上列印的結果感到滿意,請將其刪除。
答案2
如果你想將最新的 git checkin 與某個穩定版本進行比較,只需去git diff the-stable-version
儲存庫中(需要找出描述它的標籤,可能是確切的版本號或某些變體)。git
保留項目的完整歷史記錄(通常,有辦法只取得一部分)。是否處於某個不同的開發分支中並不重要the-stable-version
(即,開發分叉並且穩定分支得到了一些最後一刻的修復)。