47.5. Subversion 簡介

Subversion 是免費的開放式來源版本設定控制系統,而且普遍視之為 CVS 的後繼加強版,意即在 CVS 中已推出的功能,通常在 subversion 中也有。另外特別推薦的原因是,它兼具了 CVS 的優點,卻不必忍受其缺點。許多功能已經在 節 47.1.3, "subversion" 中都已簡要說明過。

47.5.1. 安裝 Subversion 伺服器

在伺服器上安裝儲存區資料庫是相單簡單的程序。Subversion 為此提供了專用的管理工具。建立新儲存區所要輸入的指令是:

svnadmin create /path/to/repository

其他的選項使用 svnadmin help 就可列出。與 CVS 大不相同的是,subversion 使用的不是 RCS 為基礎,而是 Berkeley Database。請確定不要在遠端檔案系統上安裝儲存區,例如 NFS、AFS 或 Windows SMB。該資料庫需要 POSIX 鎖定機制,但是這些檔案系統不支援。

svnlook 指令會提供現有儲存區的資訊。

svnlook info /path/to/repository

伺服器必須經過設定才能讓不同的使用者存取儲存區。您可以使用 Apache 網頁伺服器以及 WebDAV 來執行此動作,或使用 svnserve 以 subversion 來封裝伺服器。只要一啟動和執行 svnserve,就可以使用 svn://svn+ssh:// URL 來存取儲存區。呼叫 svn 時應該要自我驗證的使用者,可以設定在 /etc/svnserve.conf

要選用 Apache 或 svnserve 的決定取決於許多因素。建議您瀏覽 subversion 的書籍。在 節 47.5.3, "若需詳細資訊" 中可以找到更多它的詳細資訊。

47.5.2. 使用與作業

使用 svn 指令 (與 cvs 相似) 來存取 subversion 儲存區。符合對應儲存區且由設定正確之伺服器所提供的內容,可供任何用戶端以下列指令之一存取:

svn list http://svn.example.com/path/to/project

svn list svn://svn.example.com/path/to/project

使用 svn checkout 指令,將現有的專案儲存在目前的目錄中 (取出):

svn checkout http://svn.example.com/path/to/project nameofproject

「取出」會在用戶端上建立新的子目錄 nameofproject。然後就可以執行各項作業 (新增、複製、重新命名、刪除):

svn add file
svn copy oldfile newfile
svn move oldfile newfile
svn delete file

這些指令也可以用在目錄上。subversion 可以另外記錄檔案或目錄的屬性:

svn propset license GPL foo.txt

先前的範例會為 license 屬性設定 GPL 值。使用 svn proplist 顯示屬性:

svn proplist --verbose foo.txt
 Properties on 'foo.txt':
 license : GPL

使用 svn commit 將變更儲存至伺服器。另一個使用者可以使用 svn update 與伺服器同步化,在其工作目錄中併入您的變更。

與 CVS 不同的是,subversion 不需要使用 svn status 存取儲存區,就可以顯示它的工作目錄狀態。本機變更會顯示在五個資料欄中,而第一個資料欄是最重要的:

''

沒有變更。

'A'

物件已標示為新增。

'D'

物件已標示為刪除。

'M'

物件已修改。

'C'

物件發生衝突。

'I'

物件被忽略。

'?'

物件不是由版本設定控制所維護。

'!'

物件已報告為遺失。當未使用 svn 指令而刪除或移動物件時,就會出現旗標。

'~'

物件是被當做檔案來維護,但是物件曾被目錄所取代,或是目錄被物件所取代。

第二個資料欄會顯示屬性的狀態。在 subversion 書籍中可以參閱所有其他欄的意義。

使用指令 svn help 以取得某指令的參數描述:

svn help proplist
proplist (plist, pl):列出檔案、目錄或版本的所有屬性
用法:1. proplist [PATH...]
       2. proplist --revprop -r REV [URL]

  1. 列出工作複本中的版本屬性。
  2. 列出儲存區版本上的尚未設定版本之遠端屬性。
...

47.5.3. 若需詳細資訊

最主要的參考資料為 http://subversion.tigris.org/ 的 subversion 專案首頁。可以在您安裝套件 subversion-doc 後,於 file:///usr/share/doc/packages/subversion/html/book.html 目錄中找到推薦的書籍,您也可以在線上找到,網址為 http://svnbook.red-bean.com/svnbook/index.html