何謂Subversion
Subversion是一個自由/開源的版本控制系統。也就是說,在Subversion管理下,檔和目錄可以超越時空。Subversion將文件存放在中心版本庫裏。這個版本庫很像一個普通的檔伺服器,不同的是,它可以記錄每一次檔和目錄的修改情況。於是我們就可以籍此將資料回復到以前的版本,並可以查看資料的更改細節。正因為如此,許多人將版本控制系統當作一種神奇的「時間機器」。
Subversion的版本庫可以通過網路訪問,從而使用戶可以在不同的電腦上進行操作。從某種程度上來說,允許用戶在各自的空間裏修改和管理同一組資料可以促進團隊協作。因為修改不再是單線進行(單線進行也就是必須一個一個進行),開發進度會進展迅速。此外,由於所有的工作都已版本化,也就不必擔心由於錯誤的更改而影響軟體品質—如果出現不正確的更改,只要撤銷那一次更改操作即可。
Subversion的特性
版本化的目錄
CVS只能跟蹤單個檔的變更歷史,但是Subversion實現的「虛擬」版本化檔系統則可以跟蹤目錄樹的變更。在Subversion中,檔和目錄都是版本化的。
真實的版本歷史
由於只能跟蹤單個檔的變更,CVS無法支援如檔拷貝和改名這些常見的操作—這些操作改變了目錄的內容。同樣,在CVS中,目錄下的檔只要名字相同即擁有相同的歷史,即使這些同名檔在歷史上毫無關係。而在Subversion中,可以對檔或目錄進行增加、拷貝和改名操作,也解決了同名而無關的文件之間的歷史聯繫問題。
原子提交
一系列相關的更改,要麼全部提交到版本庫,要麼一個也不提交。這樣用戶就可以將相關的更改組成一個邏輯整體,防止出現部分修改而另一部分未修改的情況提交到版本庫中。
版本化的元資料
每一個檔和目錄都有自己的一組屬性—鍵和它們的值。可以根據需要建立並存儲任何鍵/值對。和檔本身的內容一樣,屬性也在版本控制之下。
可選的網路層
Subversion在版本庫訪問的實現上具有較高的抽像程度,利於人們實現新的網路訪問機制。Subversion可以作為一個擴展模組嵌入到Apache之中。這種方式在穩定性和交互性方面有很大的優勢,可以直接使用伺服器的成熟技術—認證、授權和傳輸壓縮等等。此外,Subversion自身也實現了一個輕型的,可獨立運行的伺服器軟體。這個伺服器使用了一個特定的協定,這個協定可以輕鬆的用SSH封裝。
一致的資料操作
Subversion用一個二進位差異演算法描述檔的變化,對於文本(可讀)和二進位(不可讀)檔其操作方式是一致的。這兩種類型的檔壓縮存儲在版本庫中,而差異資訊則在網路上雙向傳遞。
高效的分支和標籤操作
在Subversion中,分支與標籤操作的開銷與工程的大小無關。Subversion的分支和標籤操作用只是一種類似於硬鏈結的機制拷貝整個工程。因而這些操作通常只會花費很少且相對固定的時間。
可修改性
Subversion沒有歷史負擔,它以一系列優質的共用C程式庫的方式實現,具有定義良好的API。這使得Subversion非常容易維護,和其他語言的互操作性很強。
官網
https://subversion.tigris.org/
繁體中文說明
https://kdo.servehttp.com/svn-book1.2.pdf |