robot
最新文章(10)
Mqskit 和其它相關工具
CPython 的 GC 二、三事
寫 Mecurial Extension 是件快樂的事!
Mozilla 台灣辨公室徵人啟事
關於 Apple 的兩項專利
core dump 之前的 frame
怎麼發出 beep 聲?
先承認你要找的是奴才吧!
程式碼要清的多乾淨?
FreeBSD 的 Thread-Local Storage 實作
首頁
新編
最新留言
Entries RSS
重要關鍵字(10)
coding (122)
Python (93)
FreeBSD (71)
WEB (61)
URL (48)
hardware (46)
javascript (36)
Linux (34)
blog (30)
C++ (16)
所有關鍵字
新增 URL
Merge FreeBSD kernel 設定
by thinker
2 Columns
關鍵字:
FreeBSD
對許多習慣 follow current 並 customize kernel configuration 的 $FreeBSD$ user 而言,最麻煩的大概就是 kernel 設定要保持在最新的狀態,否則可能會無法順利編輯。麻煩的是,當 kernel 出現新的必要設定時, user 往往就必需從 GENERIC 重新修改。先是不斷的 mark 掉一些用不到的 device 和 option ,然後還要看看原本的設定裡面,有什麼需要加入新的設定檔。這對我這個懶人而言,實在是極其痛苦的一件事。 後來我發覺 merge 是能解決這個問題的工具,一個 3-way merge 的工具。 Wikipedia 是這麼解釋 3-way merge 的: ```A three-way merge is performed after an automated difference analysis between a file 'A' and a file 'B' while also considering the origin, or parent, of both files (usually the parent is the same for both). This type of merge is generally only available through the use of supporting revision control systems where such a parent would normally exist. The merge tool examines the differences and patterns appearing in the changes between both files as well as the parent, building a relationship model to generate a merge of files 'A', 'B', and the parent, '$C$' to produce a new revision, 'D'.''' 大意就是,當一份文件分別被修改成兩個後續版本時, 3-way merge 能幫我們比對後續版本和原本做比較,並將其中一個後續版本所做的修改,整合進另一個後續版本。這就是 kernel 設定檔所遇到的問題,我們 copy 一份 GENERIC ,並做修改,進而產生後續版本,而 cvs 上的 GENERIC 隨著系統的發展,也不斷修改,產生後續版本。而我們要做的,就是把 GENERIC 的後續修改,整合進我們的設定檔。 於是,我們要做的是,將原本據以修改設定檔的 GENERIC copy 一份,以免 cvsup 時被修改。例如,將 GENERIC 備份成 GENERIC-bak。之後每當 GENERIC 有修改時,就透過 merge 這個工具,進行 3-way merge 。並在 merge 完成後,將新的 GENERIC 備份成 GENERIC-bak ,做為下次 merge 的原本。 # 備份 GENERIC-bak # 以 GENERIC 為原本,製作設定檔 mysys # source 更新 (cvsup 、 csup) # merge mysys GENERIC-bak GENERIC * 將 GENERIC 相對於 GENERIC-bak 所做的修改,更新到 mysys 裡。 * see merge(1) * GENERIC-bak 為舊版的 GENERIC # 備份新版 GENERIC 為 GENERIC-bak * 做為下次 merge 的原本 3-way merge 是一個很有用的工具,可用於各種文件的更新、整合。例如,使用別人的 source code 做了一些修改,又想將新版的 source 所增加、修改的功能整合到自已修改的版本裡,這時就可以透過 3-way merge 。 當然 3-way merge 也不是萬能的,有時侯當修改的部分是相衝突時;例如修改同一行程式, 3-way merge 就無法幫你做處理,這叫 conflict 。另外, 3-way merge 也無法幫我們檢查邏輯衝突。因此,做完 3-way merge 之後,還需要人工檢查一次,以確定 merge 的結果正確。但這不影嚮 3-way merge 的好用,已經幫我們大大減少人工的負擔。 其它更花俏的如 linkname:[Kompare] http://www.caffeinated.me.uk/kompare/ ,能提供更視覺化的 merge 功能。但個人偏好自動化,減少人工的介入,於是 $FreeBSD$ 提供的 merge 更適合我。
最後更新時間: 2007-09-30 13:00:05 CST |
引用
查詢:
COMMENTS: