最近在…把一個某某某學長改過的 kernel 整合成新的版本,在資訊不足的情況下..需要先準備好幾樣的東西,
- 當初他改完的 kernel
- 他修改前的版本
- 新的要合併的 kernel
例如原本他拿 2.6.31 來改,我就要準備一個原始的版本,用來比較他修改了哪些地方,然後我要 patch 到哪裡,例如 ubuntu 10.4 ,那我就找 10.4 的 kernel source。如果有用 diff 做出來的 patch 也不錯,只是我不知道怎麼用,因為 patch 是那兩個版本的差異,但是我是別的版本直接合進去應該會炸掉吧。當初我是想要有沒有一步一步 patch 的工具,只是好像沒有。
準備好這些裝備以後就能整裝上路了…先找一個良好的 diff 工具
- meld(L)
- kdiff3(L)
- Beyond Compare(W,L)
- windiff(W)
比較起來最後我用的是 meld ,沒什麼原因…在 fedora 15 裝起來按一按就能用了,在 windows 上面好像是 bcompare 比較優~只是我在 linux 上面裝不起來,而且似乎是商業軟體。
最重要的功能是他可以三方比對,我是沒用過其他的,只是一用就上癮了…如下圖新建一個比對以後選擇三個資料夾,他就會耗費一段時間做掃瞄,聽說其他軟體可以即時的比對而不耗費很長的時間掃瞄。
預設會使用 gedit 來開啟編輯器似乎可以替換,只是做簡單的 patch 也已堪用了~如上圖他會把差異的部份標示出來,很清楚的可以知道變更的地方,甚至不同行數的程式似乎都能追蹤~但是差異太大顯示的樣子就會有些不方便了~只是也理所當然~
軟體中的版本之間的箭頭是可以按的~我覺得超貼心的,很多情況連複製貼上都不用,只要按一下就能把左邊的同步到右邊,比較困難的情況在手動複製貼上整理。
透過這個方式在幾小時內就把原本無法預估時程的 patch 整理完了。
—
另外我在開發的 web 系統也有許多分支維護的困難,透過這個軟體也讓得以讓兩個分支可以穩定的更新共用的部份,但是還是沒找到良好的方式透過 git 管理。感覺是需要維護一個共同核心分支,在透過分支出不同版本在維護其特別的差異,在定期的 merge 共同分支部份。只是需要良好的溝通才能讓開發者知道要去哪個分支修改,或者要想一個方式讓大家不容易做錯…或者改錯還有機會做狀態回覆。