第 1 章 基本概念

目錄

版本庫
版本模型
文件共享的問題
「鎖定-修改-解鎖」方案
「複製-修改-合併」方案
Subversion 實踐
Subversion 版本庫的 URL
工作副本
修訂版本
工作副本怎樣追蹤版本庫
混合修訂版本的工作副本
總結

本章主要為那些不熟悉版本控制技術的入門者提供一個簡單扼要的、非系統的介紹。我們將從版本控制的基本概念開始,隨後闡述Subversion的獨特理念,並演示一些使用Subversion的例子。

雖然我們在本章中以分享程序原始碼作為例子,但是記住Subversion可以管理任何類型的文件集—它並非是程式設計師專用的。

版本庫

Subversion是一個「集中式」的訊息共享系統。版本庫是Subversion的核心部分,是資料的中央倉庫。版本庫以典型的文件和目錄結構形式文件系統樹來保存訊息。任意數量的客戶端連接到Subversion版本庫,讀取、修改這些文件。客戶端通過寫資料將訊息分享給其他人,通過讀取資料獲取別人共享的訊息。圖 1.1 「一個典型的客戶/伺服器系統」展示了這種系統:

圖 1.1. 一個典型的客戶/伺服器系統

一個典型的客戶/伺服器系統

這有什麼意義嗎?說了這麼多,Subversion聽起來和一般的文件伺服器沒什麼不同。事實上,Subversion的版本庫的確一種文件伺服器,但不是「一般」的文件伺服器。Subversion版本庫的特別之處在於,它會記錄每一次改變:每個文件的改變,甚至是目錄樹本身的改變,例如文件和目錄的新增、刪除和重新組織。

一般情況下,客戶端從版本庫中獲取的資料是文件系統樹中的最新資料。但是客戶端也具備查看文件系統樹以前任何一個狀態的能力。舉個例子,客戶端有時會對一些歷史性問題感興趣,比如「上星期三時的目錄結構是什麼樣的?」或者「誰最後一個修改了這個文件,都修改了什麼?」這些都是版本控制系統的核心問題:設計用來記錄和追蹤資料變化的系統。