目錄
Subversion版本庫是保存任意數量項目版本化資料的中央倉庫,因此,版本庫成為管理員關注的對象。版本庫的維護一般並不需要太多的關注,但為了避免一些潛在的問題和解決一些實際問題,理解怎樣適當的設定和維護還是非常重要的。
在這一章裡,我們將討論如何建立和設定一個Subversion版本庫,還會討論版本庫的維護,包括svnlook和svnadmin工具的使用實例。我們將說明一些常見的問題和錯誤,並提供一些安排版本庫資料的建議。
如果您只是以普通用戶的身份訪問版本庫對資料進行版本控制(就是說通過Subversion客戶端),您完全可以跳過本章。但是如果您已經是或打算成為Subversion版本庫的管理員,[24]您一定要關注一下本章的內容。
在進入版本庫管理這塊寬泛的主題之前,讓我們進一步確定一下版本庫的定義,它是怎樣工作的?讓人有什麼感覺?它希望茶是熱的還是冰的,加糖或檸檬嗎?作為一名管理員,你應該既能夠從物理具體細節的視角-版本庫如何響應一個非Subversion的工具,也能夠從邏輯視角-資料在版本庫中如何展示。
通過典型的文件瀏覽器應用程序或指令列為基礎的文件系統瀏覽工具查看,Subversion版本庫只是另一個目錄。也有一些子目錄下包含可讀的資料文件,也有一些子目錄包含不可讀的資料文件。Subversion設計的其他地方,模塊化被認真考慮,等級化的組織可以減少混亂,所以脫離細節粗略看一下典型的版本庫可以有效地揭示版本庫的基本組件。
$ ls repos conf/ dav/ db/ format hooks/ locks/ README.txt
下面是一個你看到列出目錄的快速總攬。(不要因為術語陷入困境—這些組件的細節介紹可以從本章或其他章節找到。)
一個儲存版本庫設定文件的目錄。
提供給Apache和mod_dav_svn的目錄,讓它們儲存自己的資料。
你的版本化資料的資料儲存方式。
包含了一個用來表示版本庫部署版本號整數的文件。
一個儲存鉤子腳本模版的目錄(還有鉤子腳本本身, 如果你安裝了的話)。
一個儲存Subversion版本庫鎖定文件的目錄,被用來追蹤對版本庫的訪問。
這個文件只是用來告訴它的閱讀者,他現在看的是 Subversion 的版本庫。
當然,當通過Subversion庫訪問時,這些平常的文件和目錄立刻變成了虛擬文件系統的實現,由自行定義的事件觸發完成。這個文件系統的目錄和文件都有自己的概念,與真實的文件系統(例如NTFS、FAT32、ext3等等)很類似,但是也有特別的地方—它在修訂版本間鎖定目錄和文件,保持你的所有修改可以永遠訪問的,這是你的所有版本化資料存放的地方。