登入  |  English
感謝您對「自由軟體鑄造場」的支持與愛護,十多年來「自由軟體鑄造場」受中央研究院支持,並在資訊科學研究所以及資訊科技創新研究中心執行,現已完成階段性的任務。 原網站預計持續維運至 2021年底,網站內容基本上不會再更動。本網站由 Denny Huang 備份封存。
也紀念我們永遠的朋友 李士傑先生(Shih-Chieh Ilya Li)。
源碼專案 方便實用的分散式版本控制系統-SVK

方便實用的分散式版本控制系統-SVK

SVK 是一套分散式且可供個人及企業使用的強力版本控制工具,此系統以 Subversion 為基礎,延伸開發出 repository mirroring 和可以在使用者端進行 local patchset 的管理支援。SVK 1.0 版於 2005 年 5 月釋出,目前最新版為 6 月 19 日出的 1.08 版,採用 Artistic 授權。


這套分散式的版本控制程式是由資深的 Perl 開發者高嘉良 (clkao) 發明,創造 SVK 的源起要回溯至 2003 年,當時在本地開放源碼社群小有名氣的他,熱衷於爬山與泡野溪溫泉等活動、時常身處深山裡沒有網路連線的地方,若想將剛寫好的程式上傳至 SVN 伺服器較為困難,因此他開始思考可以在深山中邊泡溫泉邊寫程式碼的方法,也就是離線進行版本控制,並以 Subversion 為本,改寫可離線使用的分散式版本控制程式。經過一年多的獨力開發,高嘉良終於完成這套程式,獨一無二的分散式版本控制管理程式 "SVK" 就此誕生,

SVK 與 Subversion 的不同、同時也是 SVK 的創新之處,在於 SVK 可以在 client 端 mirror 全部遠端的 Subversion repositories(在本地端稱為 depot),如此程式碼不但有可以接觸整個 project 的 history 和權限,更可以先創建本地端分支 (branch),在本地端撰寫並預先和下載的 repositories同步,等到了有網路的環境中,便可用一個簡單的指令將本地端的資料與伺服器資料再次同步,或是將本地端分支和其他的 Subversion repository 合併,不致因為網路連線環境的缺乏或故障而耽誤工作的進行。若將此概念延伸,程式開發者或公司員工便可在任何地點(如飛機上、無公司網路的家中、其他人的 辦公室)進行工作,可大幅提升專案運作的效率。

由於 SVK 是根據 Subversion 開發而成,因此與 CVS, Perforce, Subversion, Arch 和 cvsbk 等版本控制程式相容性高。在其他開發者的共同開發下,SVK 目前已具有 Win32 版本、使用者可在 Windows 環境下透過 GUI 安裝程式安裝 SVK,另亦有 Mac OS X 版本。目前約有 10 位開發者進行 SVK 的開發,根據 SVK 專案參與者 hcchien 表示,除了高嘉良進行主要開發外,包括 Audrey、gugod、klight、matthewd、Tlaloc亦參與了 SVK 的開發工作,其中Audrey負責 win32 的 package,Tlaloc 則負責 OSX 上的 package。

SVK 除了在 Perl 綜合典藏網 (CPAN) 釋出外,同時選擇在中央研究院自由軟體鑄造場 (OSSF) 專案平台建立專案與設置通信論壇,並開始受到社群與使用者的注意。三年多來 SVK 始終是 OSSF 專案平台上的十大熱門下載專案,並產生了不少的愛用者,如 OSSF 專案平台所採用的 RT(Request Tracker) 所屬公司 Best Practical Solution 負責人、同時也是 RT 的發明人 Jesse Vincent 即為 SVK 的重度使用者。有鑒於 SVK 未來發展潛力看好,Best Practical Solution 於 2006 年 6 月宣佈買下SVK專案,開始提供SVK的商業服務,包括客戶諮詢、訓練、轉換、客製化軟體開發等服務,同時高嘉良亦成為 Best Practical Solution 的合夥人,讓開放源碼社群專案商業化的成功案例又添一樁佳話。

除了可以滿足個人需求,目前有許多大型的開放源碼計劃和商業公司亦開始採用 SVK 進行版本控制,包括 KDE、WINE、Samba、RT、Kwiki、甚至蘋果電腦部門團隊等均採用 SVK 作為版本控制工具,國內的重要開放源碼專案如 OpenVanilla 輸入法及文字處理架構亦持續使用 SVK 作為開發工具,使得 SVK 的應用層面更加多樣化。

儘管 SVK 已經獲得廣泛的使用,SVK 開發團隊不以此為滿足,高嘉良表示 SVK 2.0 版即將推出,將增加許多新功能,例如可自訂一個virtual checkout layout 的 viewpoint 功能,以及 merge 功能的加強、如對 copy / move 的支援;展望未來,SVK 計畫將開發更多更實用的功能,例如 usability 的加強以及 thin-client 的計畫等。在 SVK 計畫的待辦事項 (todo list) 上,還有規劃以 svkup / svkupd 取代現行 freebsd 中行之有年、略嫌老舊的 cvsup 以提升其效能,以及開發 Web-based tools,將來透過瀏覽器便能用 SVK 執行例行工作等,以改進現有的文字命令列的操作介面。

如同多數偉大的開放源碼專案,SVK 專案亦是從滿足開發者的個人需求出發,從而創造出分散式、可以不用透過網路進行「無痛 merging」的版本控制方法,對於需要 SVN 或 Subversion、但又為網路問題所苦的的企業與專案來說是方便實用的解決方案,亦造福了整個社群的軟體開發方式。

參考網址:
1.OSSF平台上的SVK專案
2.SVK計畫網站
3.《Version Control with SVK》
4.高嘉良專訪




自由軟體鑄造場電子報 : 第 63 期 IOSESC 2006 頒獎典禮

分類: 源碼專案