手冊

第 3 章。儲存庫

目錄

儲存庫建立
使用命令列用戶端建立儲存庫
使用 TortoiseSVN 建立儲存庫
本機存取儲存庫
存取網路共用上的儲存庫
儲存庫佈局
儲存庫備份
伺服器端 hook 腳本
檢出連結
存取儲存庫

無論您使用哪種協定來存取您的儲存庫,您始終需要建立至少一個儲存庫。這可以使用 Subversion 命令列用戶端或 TortoiseSVN 來完成。

如果您尚未建立 Subversion 儲存庫,現在是時候執行此操作了。

儲存庫建立

使用命令列用戶端建立儲存庫

  1. 建立一個名為 SVN 的空資料夾 (例如 D:\SVN\),它將用作所有儲存庫的根目錄。

  2. D:\SVN\ 內建立另一個資料夾 MyNewRepository

  3. 開啟命令提示字元 (或 DOS-Box),切換到 D:\SVN\ 並輸入

    svnadmin create --fs-type fsfs MyNewRepository
              

現在您已經在 D:\SVN\MyNewRepository 建立了一個新的儲存庫。

使用 TortoiseSVN 建立儲存庫

圖 3.1。未版本控制資料夾的 TortoiseSVN 選單

The TortoiseSVN menu for unversioned folders

  1. 開啟 Windows 檔案總管

  2. 建立一個新的資料夾,並將其命名為例如 SVNRepository

  3. 按一下滑鼠右鍵點擊新建立的資料夾,然後選擇 TortoiseSVN在此建立儲存庫...

    然後會在新的資料夾內建立一個儲存庫。 請勿自行編輯這些檔案!!!。如果您收到任何錯誤訊息,請確保該資料夾是空的且未受寫入保護。

    系統也會詢問您是否要在儲存庫中建立目錄結構。請在標題為「儲存庫佈局」的章節中,瞭解關於佈局選項的資訊。

    TortoiseSVN 將在建立儲存庫時設定自訂資料夾圖示,以便您可以更輕鬆地識別本機儲存庫。如果您使用官方命令列用戶端建立儲存庫,則不會指派此資料夾圖示。

提示

我們也建議您完全不要使用 file:// 存取,除了用於本機測試目的。對於所有使用者(單一開發人員除外),使用伺服器更安全、更可靠。

本機存取儲存庫

要存取您的本機儲存庫,您需要該資料夾的路徑。請記住,Subversion 期望所有儲存庫路徑都採用 file:///C:/SVNRepository/ 格式。請注意自始至終都使用正斜線。

要存取位於網路共用上的儲存庫,您可以使用磁碟機對應,也可以使用 UNC 路徑。對於 UNC 路徑,格式為 file://伺服器名稱/路徑/至/儲存庫/。請注意,這裡只有 2 個前導斜線。

在 SVN 1.2 之前,UNC 路徑必須以更晦澀難懂的格式 file:///\伺服器名稱/路徑/至/儲存庫 給出。此格式仍然支援,但不建議使用。

存取網路共用上的儲存庫

雖然理論上可以將 FSFS 儲存庫放在網路共用上,並讓多個使用者使用 file:// 協定存取它,但我們 絕對 不建議這樣做。事實上,我們 強烈 不鼓勵這樣做,並且由於各種原因,我們不支援這種用法

  • 首先,您正在授予每個使用者對儲存庫的直接寫入權限,因此任何使用者都可能意外刪除整個儲存庫或使其在其他方面無法使用。

  • 其次,並非所有網路檔案共用協定都支援 Subversion 所需的鎖定,因此您可能會發現您的儲存庫已損壞。它可能不會立即發生,但總有一天兩個使用者會嘗試同時存取儲存庫。

  • 第三,檔案權限必須設定正確。您可能可以在原生 Windows 共用上勉強成功,但 SAMBA 特別困難。

  • 如果有人安裝了較新版本的用戶端,該用戶端升級了儲存庫格式,那麼其他所有人將無法存取儲存庫,直到他們也升級到新的用戶端版本。

file:// 存取僅適用於本機、單一使用者存取,特別是用於測試和偵錯。當您想要共用儲存庫時,您 真的 需要設定一個適當的伺服器,而且它並沒有您想像的那麼困難。請閱讀標題為「存取儲存庫」的章節,以取得有關選擇和設定伺服器的指南。

儲存庫佈局

在將資料匯入儲存庫之前,您應該先考慮如何組織您的資料。如果您使用建議的佈局之一,您稍後會更容易。

有一些標準、建議的方法來組織儲存庫。大多數人會建立一個 trunk 目錄來保存開發的「主線」,一個 branches 目錄來包含分支副本,以及一個 tags 目錄來包含標籤副本。如果一個儲存庫只包含一個專案,那麼人們通常會建立這些頂層目錄

/trunk
/branches
/tags
    

由於這種佈局非常常用,因此當您使用 TortoiseSVN 建立新的儲存庫時,它也會提供為您建立目錄結構。

如果儲存庫包含多個專案,人們通常會按分支索引其佈局

/trunk/paint
/trunk/calc
/branches/paint
/branches/calc
/tags/paint
/tags/calc
    

...或按專案

/paint/trunk
/paint/branches
/paint/tags
/calc/trunk
/calc/branches
/calc/tags
    

如果專案彼此不密切相關,並且每個專案都是單獨檢出的,則按專案索引是有道理的。對於您可能想要一次檢出所有專案的相關專案,或者專案全部綁定在單一發行套件中的情況,通常最好按分支索引。這樣,您只有一個 trunk 要檢出,並且子專案之間的關係更容易看見。

如果您採用頂層 /trunk /tags /branches 方法,則沒有任何規定您必須為每個分支和標籤複製整個 trunk,並且在某些方面,這種結構提供了最大的靈活性。

對於不相關的專案,您可能更喜歡使用單獨的儲存庫。當您提交變更時,變更的是整個儲存庫的版本號,而不是專案的版本號。讓 2 個不相關的專案共用一個儲存庫可能意味著版本號中存在很大的間隙。Subversion 和 TortoiseSVN 專案出現在相同的主機位址,但它們是完全獨立的儲存庫,允許獨立開發,並且不會混淆組建編號。

當然,您可以自由地忽略這些常見的佈局。您可以建立任何類型的變體,無論哪種最適合您或您的團隊。請記住,無論您選擇什麼,這都不是永久的承諾。您可以隨時重新組織您的儲存庫。由於分支和標籤是普通目錄,TortoiseSVN 可以根據您的意願移動或重新命名它們。

從一種佈局切換到另一種佈局只是發出一系列伺服器端移動的問題;如果您不喜歡儲存庫中的組織方式,只需調整目錄即可。

因此,如果您尚未在儲存庫內建立基本資料夾結構,則應立即執行此操作。有兩種方法可以實現此目的。如果您只是想建立 /trunk /tags /branches 結構,您可以使用儲存庫瀏覽器建立三個資料夾 (在三個不同的提交中)。如果您想建立更深層次的階層結構,那麼首先在磁碟上建立資料夾結構,然後在單次提交中匯入它會更簡單,如下所示

  1. 在您的硬碟上建立一個新的空資料夾

  2. 在該資料夾內建立您想要的頂層資料夾結構 - 目前不要在其中放置任何檔案!

  3. 透過按一下滑鼠右鍵點擊包含此資料夾結構的資料夾,然後選擇 TortoiseSVN匯入...,將此結構匯入儲存庫。在匯入對話方塊中,輸入您儲存庫的 URL,然後按一下「確定」。這會將您的暫存資料夾匯入儲存庫根目錄,以建立基本的儲存庫佈局。

請注意,您要匯入的資料夾名稱不會出現在儲存庫中,只會顯示其內容。例如,建立以下資料夾結構

C:\Temp\New\trunk
C:\Temp\New\branches
C:\Temp\New\tags
      

C:\Temp\New 匯入儲存庫根目錄,然後它將如下所示

/trunk
/branches
/tags
      

TortoiseSVN 首頁