2011年4月13日 星期三

使用 Ubuntu 套件的原始碼版本管理庫

以 language-selector 為例,並且參考先前的介紹來建立 Shared repository

$ bzr init-repo language-selector
$ cd language-selector
一般來說,想要拿到 Ubuntu 上面的最新開發中的版本,可以使用:
$ bzr branch lp:ubuntu/language-selector trunk
如果想要拿到 Ubuntu maverick 上面的開發版本就應該使用:
$ bzr branch lp:ubuntu/maverick/language-selector maverick
如果想要知道目前 Ubuntu 上面有哪些官方的開發版本的話可以使用 devscripts 套件中的 rmadison 來查詢
$ rmadison language-selector
language-selector |     0.1.20 |        dapper | source, all                    
language-selector |   0.1.20.1 | dapper-updates | source, all                   
language-selector |      0.3.4 |         hardy | source, all                    
language-selector |     0.4.18 |        karmic | source, all                    
language-selector |      0.5.7 |         lucid | source, all                    
language-selector |      0.5.8 | lucid-updates | source, all                    
language-selector | 0.5.8+langfixes~lucid1 | lucid-backports | source, all      
language-selector |      0.6.6 |      maverick | source, all                    
language-selector | 0.6.6+langfixes~maverick1 | maverick-backports | source, all
language-selector |       0.31 |         natty | source, all                    
假設想要使用 maverick-backports 當中的版本就可以使用:
$ bzr branch lp:ubuntu/maverick-backports/language-selector maverick-backports

另外,除了可以使用 `bzr branch` 之外,還可以使用 `bzr checkout` 來取得原始碼。
使用 `bzr branch` 在 `bzr commit` 後,還要再使用 `bzr push` 來將變動的部份提交到遠端的 Bazaar Repository 上面;
而使用 `bzr checkout` 的話,在 `bzr commit` 的同時就會自動提交到遠端的 Bazaar Repository 上。
無論是使用 `bzr branch` 還是 `bzr checkout` 都會將完整的變動歷史資料下載到本地端,如果想要像 Subversion 那樣只會取得最新的一筆資料可以使用 `bzr checkout --lightweight` 來取得原始碼。

想要知道目前處於哪一種模式 (branch/checkout/lightweight-checkout) 可以在該目錄下面執行

$ bzr info
如果是 lightwieght checkout 的話,應該會看到 `light checkout root`
如果是 checkout 的話,應該會看到 `repository checkout root`
如果上面兩個都沒有看到的話應該就是 branch 了

最後,如果想要在 branch 與 checkout 之間切換的話,就要使用 `bzr bind/unbind`

參考資料:
http://wiki.inkscape.org/wiki/index.php/Working_with_Bazaar
https://wiki.ubuntu.com/DistributedDevelopment/Documentation/GettingTheSource