2007年5月14日 星期一

轉換OpenEmbedded的repository為Subversion系統

Marcin Juszkiewicz日前在blog "3 years of OpenEmbedded and me" 提到OpenEmbedded這個專案計畫已有超過三年的開發歷程,也廣泛的被自由軟體專案甚至是商業公司所採用,知名的OpenMoko即採用此系統提供所需的套件與基礎建設。OpenEmbedded採用的版本控制系統是具有分散式開發的monotone,這是一套很優秀的系統,也得以藉此處理眾多套件與硬體組態的維護,但其難度不算低,所以開發者又要學一套新系統。

之前的文章「SVK與嵌入式系統開發」提及我正在做的 "openmoko-builder",透過SVK來管理多方的版本控制系統檔案庫 (repository),目標是建立最小OpenMoko建構系統。SVK已經替我們處理很多問題,但目前沒辦法操作monotone系統,這讓我的進度遲滯不前。還好Lele Gaifax撰寫了一個好用的工具Tailor,提供多種版本控制系統互轉的能力,這也讓我一舉克服維護與同步處理的議題。

在使用Tailor之前,請確認依據OpenEmbedded的文件 "Getting Started",取得並更新 "/stuff/OE.mtn" 這個資料庫檔案。接著我們需要安裝Tailor最新的開發版本,其使用darcs系統,所以請用apt-get一類的工具安裝套件,以下是取得程式碼的操作:

darcs get http://darcs.arstecnica.it/tailor/
Tailor使用Python開發,安裝也很簡單:
cd tailor ; sudo setup.py install
我們需要編輯一份Tailor所需的專案檔案,描述monotone轉換到Subversion的細節,舉例來說我們建立一個名為 "task.project" 的檔案,以下是其內容:
[DEFAULT]
verbose = True
debug = True

[project]
target = svn:target
start-revision = HEAD
root-directory = /src/repos
state-file = tailor.state
source = monotone:source
subdir = .

[monotone:source]
repository = /stuff/OE.mtn
module = org.openembedded.dev

[svn:target]
module = /openembedded
repository = file:///src/repos
SVN的檔案庫 "file:///src/repos" 自然就是存放轉換後的版本系統所用,我們應該事先建立,操作程序如下:
$ mkdir -p /src/repos
$ svnadmin create --fs-type fsfs /src/repos
注意,建立時必須選擇FSFS的型態,否則Tailor處理可能會遇到問題。最後就是執行Tailor的操作,使用方式如下:
$ tailor task.project
沒意外的話,我們就可以看到這之間的轉換過程,最後會轉換輸出於檔案庫 "file:///src/repos/openembedded" 之中,這時候可以用SVN自己的merge工具或SVK的smerge進行套件的更新維護,畢竟我們感興趣的套件就那幾個而已。

沒有留言: