2008年7月7日

Playing SVN with Ubuntu

Subversion 是一套好用的版本控制工具,一般簡稱為 SVN,可跨平台、跨開發工具支援,除了作為程式碼專案的版本控制管理,拿來當文件管理、備份、分享系統也相當實用。在 SVN 成為普遍使用的工具之前,最常被使用的工具是CVS(Current Version System),以Eclipse開發工具來說,CVS是很早就已內建支援的團隊協同(team collaboration)開發工具,而SVN通常必須加上3rd Party的延伸套件(Subclipse)才能支援(成為預設套件應該只是時間上的問題,目前3.4已經提供Subversive - SVN Team Provider,只是要另外加裝3rd Party Connectors)。由於SVN的易學易用,並有許多具親和力的圖形介面工具、可與Windows檔案瀏覽器(Explorer)整合(Tortoisesvn),即使是Visual Studio .NET的開發者,也有AnkhSVN可以選擇(當然使用人口沒微軟自家的Team System多啦)。集合起各種作業系統、開發環境平台的使用者,SVN儼然成為時下的主流。

這篇文章提供Ubuntu安裝SVN伺服器的初步說明,希望能幫助還未上手的朋友能在短時間內學會使用這個好工具。

安裝 Subversion

要善用Ubuntu超級豐富的APT套件庫,不但省時省力、日後也好維護。
sudo apt-get install subversion
一道指令解決。

設定 SVN 伺服器

自己架設伺服器也只需要很少的幾個步驟。
sudo apt-get install xinet.d
這道指令並非與SVN直接相關,而是安裝一個xinetd的daemon程式,它就像一個伺服器服務程式的管家,負責幫忙接待想透過網路連結服務的客戶。

建立新檔案在 /etc/xinet.d/svn ,檔案內容如下:
# default: off
# description: svnserve is the server part of Subversion.
# server_args = -i -r /var/lib/svn/repositories
service svn
{
disable = no
port = 3690
socket_type = stream
protocol = tcp
wait = no
user = svn
server = /usr/bin/svnserve
server_args = -i -r /home/svn
}

* /home/svn 是自行指定的 repository 存放目錄

接著建立 svn 的 user 及 home directory:
sudo mkdir /home/svn
sudo useradd -d /home/svn svn
sudo chown svn.svn /home/svn

重新啟動 xinetd ,測試SVN服務:
sudo /etc/init.d/xinetd restart
telnet localhost 3690

當telnet程式連線成功,並出現以下訊息,則表示SVN daemon已經啟動成功:
( success ( 1 2 ( ANONYMOUS ) ( edit-pipeline svndiff1 absent-entries ) ) )

建立新的 repository

cd /home/svn
sudo svnadmin create NEW_REPO
sudo chown svn.svn NEW_REPO -R

完成之後,就能已 svn 指令(SVN client)操作。
svn list svn://localhost/NEW_REPO
當然,因為都還沒有丟檔案,回傳一定是空的。

如果要操作權限(例如有帳號密碼可讀寫,訪客只能讀不能寫),則需要編輯 NEW_REPO/conf/svnserve.conf,設定以下三行(取消註解):
anon-access = read
auth-access = write
password-db = passwd

並在 NEW_REPO/conf/passwd 下新增帳號及密碼,例如:
[users]
jacky = pwd_is_blank

---= Q&A =---

SVN server在運作一段時間後,可能出現資料庫錯誤的狀況,訊息如下:
Could not open the requested SVN filesystem

此時必須使用 db_recover 指令進行修復,以Ubuntu Linux來說,安裝db4.*-util套件即可取得此程式。

以下示範在 Ubuntu Linux 的流程:

先搜尋有哪些db4.*-util版本可以安裝。
apt-cache search db4.*-util
db4.6-util - Berkeley v4.6 Database Utilities db4.2-util - Berkeley v4.2 Database Utilities db4.3-util - Berkeley v4.3 Database Utilities db4.4-util - Berkeley v4.4 Database Utilities db4.5-util - Berkeley v4.5 Database Utilities
我選擇的是db4.4-util,因此開始apt-get安裝。
apt-get install db4.4-util

安裝完成後,就會多一道 db4.4_recover 指令,切換到 svn repository directory 下執行這道指令即可修復。

更多參考資源在:

沒有留言:

張貼留言

lyhcode by lyhcode
歡迎轉載,請務必註明出處!