[TOC]
* * * * *
## 什么是版本控制
版本控制[Revision control],最初來源于工程設計領域,是維護工程藍圖的標準做法,能追蹤工程藍圖從誕生一直到定案的過程。是一種記錄若干文件內容變化,以便將來查閱特定版本修訂情況的系統。
## 什么是版本庫
Subversion是一種集中的分享信息的系統,它的核心是版本庫,它儲存所有的數據,版本庫按照文件樹形式儲存數據―包括文件和目錄。任意數量的客戶端可以連接到版本庫,讀寫這些文件。通過寫,別人可以看到這些信息,通過讀數據,可以看到別人的修改。[圖2.1 “一個典型的客戶/服務器系統”]描述了這種關系:
圖2.1.一個典型的客戶/服務器系統

一個典型的客戶/服務器系統
所以為什么這很有趣呢?講了這么多,讓人感覺這是一種普通的文件服務器,但實際上,版本庫是另一種文件服務器,而不是你常見的那一種。最特別的是Subversion會記錄每一次的更改,不僅針對文件也包括目錄本身,包括增加、刪除和重新組織文件和目錄。
當一個客戶端從版本庫讀取數據時,通常只會看到最新的版本,但是客戶端也可以去看以前的任何一個版本。舉個例子,一個客戶端可以發出這樣的歷史問題“上個星期三的目錄是怎樣的?”或是“誰最后一個更改了這個文件,更改了什么?”,這些是每一種版本控制系統的核心問題:系統是設計來記錄和跟蹤每一次改動的。
## 什么是Subversion
Subversion是一個自由/開源版本控制系統,它管理文件和目錄可以超越時間。一組文件存放在中心版本庫,這個版本庫很像一個普通的文件服務器,只是它可以記錄每一次文件和目錄的修改,這便使你可以取得數據以前的版本,從而可以檢查所作的更改。從這個方面看,許多人把版本控制系統當作一種“時間機器”。
Subversion可以通過網絡訪問它的版本庫,從而使用戶可以在不同的電腦上使用。一定程度上可以說,允許用戶在各自的地方修改同一份數據是促進協作。進展可能非常的迅速,并沒有一個所有的改變都會取得效果的通道,由于所有的工作都有歷史版本,你不必擔心由于失去某個通道而影響質量,如果存在不正確的改變,只要取消改變。
Subversion就是一款實現版本控制的工具軟件,通常也稱為版本控制器,簡稱SVN。
Subversion是Apache軟件基金會組織下的一個項目。
一些版本控制系統也是軟件配置管理(SCM)系統,這種系統經過特定的精巧設計來管理源代碼,有許多關于軟件開發的特性―本身理解編程語言、或者提供構建程序的工具。然而,Subversion不是這樣一個系統,它是一個通用系統,可以管理任何類型的文件集,對你這可能是源代碼―對別人,可能是一個貨物清單或者是數字電影。