序言

目錄

讀者
怎樣閱讀本書
本書約定
排版習慣
圖標
本書的結構
本書是免費的
致謝
來自 Ben Collins-Sussman
來自 Brian W. Fitzpatrick
來自 C. Michael Pilato
Subversion是什麼?
Subversion 的歷史
Subversion的特性
Subversion 的架構
Subversion 的組件
 

即使你能確認什麼是完美,也不要讓完美成為好的敵人,更何況你不能確認。因為落入過去陷阱的不悅,你會在設計時因為擔心自己的缺陷而無所作為。

 
 --Greg Hudson

在開源軟體世界,長久以來,並行版本系統(CVS)一直是版本控制工具的唯一選擇。事實證明,這個選擇不錯。CVS的自由軟體身份,無約束的處事態度,和對網路化操作的支持(網路使眾多身處不同地方的程式設計師可以共享他們的工作成果),正符合了開源世界協作的精神,CVS和它半混亂狀態的開發模式已成為開源文化的基石。

但是,CVS也並不是沒有缺陷,而修正這些缺陷必定要耗費很大的精力。而Subversion則是以CVS繼任者的面目出現的新型版本控制系統。Subversion的設計者們力圖通過兩方面的努力贏得CVS用戶的青睞:保持開源系統的設計(以及「界面風格」)與CVS盡可能類似,同時盡力彌補CVS許多顯著的缺陷。這些努力的結果使得從CVS遷移到Subversion不需要作出重大的變革,Subversion確實是非常強大、非常有用和非常靈活的工具。並且很重要的一點,幾乎新開的開放原始碼專案都選擇了Subversion替代CVS。

本書是為Subversion 1.4系列撰寫的。在書中,我們盡力涵蓋Subversion的所有內容。但是,Subversion有一個興盛和充滿活力的開發社群,已有許多新的特性和改進措施計劃在Subversion新版本中實現,本書中講述的命令和特性可能會有所變化。

讀者

本書是為了那些在計算機領域有豐富知識,並且希望使用Subversion管理資料的人士準備的。儘管Subversion可以在多種不同的操作系統上運行,但其基本用戶操作界面是基於指令列的,也就是我們將要在本書中講述和使用的指令列工具(svn)。

出於一致性的考慮,本書的例子假定讀者使用的是類Unix的操作系統,並且熟悉Unix和指令列界面。當然,svn程序也可以在入Microsoft Windows這樣的非Unix平台上運行,除了一些微小的不同,如使用反斜線(\)代替正斜線(/)作為路徑分隔符,在Windows上運行svn程序的輸入和輸出與在Unix平台上運行完全一致。

大多數讀者可能是那些需要追蹤代碼變化的程式設計師或者系統管理員,這是Subversion最普遍的用途,因此這個場景貫穿於整本書的例子中。但是Subversion可以用來管理任何類型的資料:圖像、音樂、資料庫、文件等等。對於Subversion,資料就是資料而已。

本書假定讀者從來沒有使用過任何版本控制工具,同時,我們也努力使CVS用戶能夠輕鬆的投入到Subversion使用當中,不時會出現一些涉及CVS的內容,此外,在附錄的一個章節中總結了Subversion和CVS的區別。

需要說明的是,所有原始碼示例僅僅是例子而已。這些例子需要通過正確編譯參數進行編譯,在這裡列舉它們只是為了說明特定的場景,並非為了展示優秀的編碼風格。