Subversion/基本使用指南
Subversion (SVN) 是由 CollabNet Inc. 於 2000 年啟動的版本控制系統。它可以幫助您跟蹤檔案和目錄更改的歷史記錄。通常,一個 Subversion 儲存庫由一個社群的人員使用。儲存庫是一個集中式資料儲存,人們通常在本地進行更改,然後將更改釋出(“簽入”或“提交”,這些都是此過程的同義詞)到儲存庫。因此,他們在本地機器上的內容是**工作副本** - 儲存庫子樹的副本(或者可能是整個樹的副本)

Subversion 的機制不同於其著名的前身 CVS 的機制。讓我們看看如何在伺服器上存檔連續提交
首先,使用者將檔案和目錄匯入到伺服器。所有檔案和目錄都在釋出(或修訂)1。

然後,使用者提交一些更改。只有檔案 fil1 和 fil3 包含修改,因此只有這些專案被提交。兩者都在修訂版 2 中提交。如果我們想要將所有檔案檢索到最新的修訂版,我們將擁有修訂版 2 的檔案,或者如果不存在,則擁有最新的先前修訂版(即 1)的檔案。

對於釋出版 3 的提交,只有檔案 fil3 和 fil4 有更改。請注意,檔案 fil4 沒有修訂版 2。

檔案 fil2 和 fil3 被提交。

添加了一個檔案:fil5。直到釋出版 5 之前,該檔案都沒有版本。

添加了一個目錄:rep5。

當用戶將本地檔案更新到舊的釋出版(例如釋出版 4)時,Subversion 將傳送釋出版 4 的每個檔案或目錄,或者如果不存在,則傳送最後一個之前的檔案或目錄。

因此,有一個名為儲存庫的版本化資料的伺服器端儲存,以及訪問該儲存庫的客戶端。JavaSVN 是
- 客戶端庫。
- 它提供 API 用於不需要儲存庫的本地操作,並且僅與工作副本有關,以及用於直接與儲存庫互動的 API。
- 同時,最新版本的 JavaSVN 提供了一些額外的功能:它可以建立本地儲存庫,複製(在檔案系統中複製)現有儲存庫等。
- 配置起來非常靈活。
不幸的是,工作副本 (WC) 格式限制使用者只能操作檔案和目錄。JavaSVN 幫助解決此限制,它提供兩種不同級別的引擎:一個高層引擎,用於操作工作副本(如 svn.exe),以及一個低層引擎,它是 Subversion 協議的實現。兩者都提供相應的 API。低層引擎實際上是一個驅動程式,用於直接與 Subversion 儲存庫互動,而高層引擎在操作真正需要訪問儲存庫時使用該低層引擎。
alias revertfile='read revertfile?"What file do you want to revert?"' alias revertrev='read revertrev?"What revision do you want to revert to?"' alias svnrevert='revertfile; revertrev; svn up $revertfile -r$revertrev; mv $revertfile foo; svn up; mv foo $revertfile;'
如上所述,低層引擎是一個特定於協議的驅動程式,用於直接與儲存庫互動。高層引擎可能並非使用此類驅動程式的唯一引擎,它只是一個標準場景。例如,可能有一些開發人員使用與檔案和目錄截然不同的抽象。他們也希望將他們的物件置於版本控制之下,但如何做到呢?使用工作副本的標準方法在這裡不適用,因為它基於目錄和檔案的樹。