登入  |  English
感謝您對「自由軟體鑄造場」的支持與愛護,十多年來「自由軟體鑄造場」受中央研究院支持,並在資訊科學研究所以及資訊科技創新研究中心執行,現已完成階段性的任務。 原網站預計持續維運至 2021年底,網站內容基本上不會再更動。本網站由 Denny Huang 備份封存。
也紀念我們永遠的朋友 李士傑先生(Shih-Chieh Ilya Li)。

5.Subversion book總覽

前面的教學主要講的內容在於Subversion Book前三章的內容,為了將來深入運用時能夠有些想法,在這裡說明第三章以後的基本概念!

而詳細的內容應閱讀Subversion book文件,如下:

Subversion book各語言列表 https://svnbook.red-bean.com/nightly/

Subversion book繁體中文版 https://svn.stu.edu.tw/svnbook/

依Browser的語言自動選擇對應語言的文件 https://svnbook.red-bean.com/

分支與合併

分支, 標記, 以及合併, 幾乎都是所有版本控制系統的共通概念. 如果你對這些概念不瞭解, 我們在這一章提供了一個不錯的介紹. 如果你熟悉這些概念的話, 那麼我們希望你能對 Subversion 如何實作這些概念的作法感到有興趣.

分支是版本控制的基本部份. 如果你要讓 Subversion 來管理你的資料, 那麼你一定會依賴這個功能. 本章假設你已經瞭解 Subversion 的基本概念. (Chapter 2, 基本概念).

何謂分支?

假設你的工作是負責管理公司部門的文件, 某種使用手冊什麼的. 有一天, 另一個部門跟你要同一份使用手冊, 不過他們行事不同, 要的內容也有 '些微' 的不一樣.

在這種情況下, 你該怎麼辦? 你會使用直接了當的方法, 直接產生文件的第二份複本, 然後開始分別維護這兩份文件. 隨著各個部份要求你作些小修改, 你會將這些修改整入某一份, 或是另一份文件.

對這兩份文件, 你常會想要作同樣的修改. 舉個例子, 如果你在第一份複本裡看到一個錯字, 很有可能第二份複本裡也會有. 畢竟這兩份文件幾乎都一樣; 它們只有在特定的一小部份不一樣而已.

這就是 分支 的基本概念 — 換句話說, 有一條發展途徑與另一條是獨立的, 但是如果回溯的時間夠久, 你會發現它們都有共同的歷史紀錄. 一個分支都是以某樣東西的複本開始其生命週期, 然後就自行發展下去, 有著自己的歷史紀錄發生.

在分支之間複製更動

現在你與 Sally 在同一專案的不同平行分支上工作: 你的是私有分支, 而 Sally 則是 主幹 (trunk), 也就是主要的發展線.

對於有眾多貢獻人員的專案來說, 大多數的人都有主幹的工作複本是很常見的. 要是有哪個人需要進行可能會妨礙到主幹的長期變動, 標準的作法是建立一個私有的分支, 然後將更動都送交至該分支, 直到工作結束為止.

所以, 好消息就是你和 Sally 兩個不會互相影響, 壞消息是這兩個很容易就跑得 太 遠了. 請記得 "與世隔絕" 策略的一個問題, 就是在你結束分支的工作之後, 幾乎不可能將你所作的更動, 在不產生大量衝突的情況下, 把它合併回主分支去.

相反地, 你和 Sally 應該在你工作時, 也一直分享彼此的更動. 哪些更動應該被分享, 完全由你來決定; Subversion 提供你在各個分支之間 "複製" 選擇性更動的能力. 而當你已經處理完你的分支時, 整個分支的所有更動就可以複製回主幹去.

標記

另一個常見的版本控制概念, 就是 標記. 標記只是一個計劃在時間軸上的 "快照". 在 Subversion 中, 這個概念已經隨處都是了. 每一個檔案庫的修訂版, 就是檔案系統在每一次送交之後的快照.

但是呢, 人們通常會想要標記一個便於記憶的名稱, 像是 "release-1.0". 而且他們只想要的, 只是一部份檔案系統子目錄的快照而已. 要記住某一個軟體的 release-1.0 版, 對應的是修訂版 4822 裡的某個特定子目錄, 畢竟是不太容易的.

檔案庫管理

Subversion 的檔案庫是個中央倉儲, 用來存放任意數量專案的受版本控管資料. 因為如此, 它成為管理員集中注意的焦點. 檔案庫一般並不需要太多的照顧, 但是瞭解如何適當地設定它, 照顧它是很重要的, 如此才能避免一些潛在性的問題, 而實際的問題得以安全地解決.

在本章中, 我們會討論如何建立與設定 Subversion 的檔案庫, 以及如何開放檔案庫的網路存取. 我們也會提到檔案庫的維護, 包括 svnlook 與 svnadmin 工具的使用方法 (它們都包含 Subversion 中). 我們也會說明常見的問題與錯誤, 並提供幾個如何安排檔案庫資料的建議.

如果你存取 Subversion 的檔案庫的目的, 只是打算成為一個單純將資料納入版本控管的使用者的話 (也就是透過 Subversion 用戶端), 那你可以完全跳過本章. 但是如果你是, 或想要成為 Subversion 的檔案庫管理員, 本章絕對是你要投注注意力的地方.

當然了, 一個人無法成為檔案庫的管理員, 除非他有檔案庫可管理.

伺服器組態

一個Subversion的版本庫可以和客戶端同時運行在同一個機器上,使用file:///訪問,但是一個典型的Subversion設置應該包括一個單獨的服務器,可以被辦公室的所有客戶端訪問—或者有可能是整個世界。

本小節描述了怎樣將一個Subversion的版本庫暴露給遠程客戶端,我們會覆蓋Subversion已存在的服務器機制,討論各種方式的配置和使用。經過閱讀本小節,你可以決定你需要哪種網絡設置,並且明白怎樣在你的主機上進行配置。

進階主題

如果你是從頭開始逐章閱讀本書的, 你應該已經知道如何使用 Subversion 用戶端, 進行大多數常見的版本控制作業. 你知道如何從 Subversion 檔案庫取出一份工作複本. 你已經習慣利用 svn commit 與 svn update 功能來送交與取得更動. 你甚至可能已經會反射性地使用 svn status 命令而不自覺. 不管從哪個角度看, 你已經相當習慣使用 Subversion 了。

但是 Subversion 的功能不僅止於 "常見的版本控制作業".

本章著重於 Subversion 並不常用的功能. 在本章中, 我們會討論 Subversion 的性質 (或 「描述資料」) 支援, 如何透過修改 Subversion 的執行時期設定檔, 來改變它的預設行為. 我們會描述你要怎麼利用外部定義, 讓 Subversion 從多個檔案庫取得資料. 對於 Subversion 發行檔中的額外用戶端與伺服器端的工具, 我們也會有詳盡的解說.

在閱讀本章之前, 你應該已經熟悉 Subversion 的基本目錄與檔案能力. 如果你還沒看過這部份, 或是需要再重新熟悉一下, 我們建議你看看 Chapter 2, 基本概念 與 Chapter 3, 導覽. 當你能夠駕馭基本的功能, 也瞭解本章的內容, 你就是 Subversion 的強力使用者了 — 無效退費!

開發者資訊

Subversion是一個開源的軟件項目,使用Apache樣式的軟件許可證。這個項目由位於加利福尼亞的CollabNet, Inc.軟件開發公司資助。這個關於Subversion開發的社區一直歡迎新成員貢獻自己的時間和注意力。鼓勵志願者做他們能做的任何幫助,不管是發現 和診斷bug,精煉已存的代碼還是補充新的特性。

本章是為那些希望實際參與源代碼編寫來幫助Subversion不斷進步的人們準備的。我們要知道,在這裡我們會涉及到許多軟件 內在的細節,在開發Subversion本身—或利用Subversion庫開發全新工具時—所用到的許多核心技術。如果你無法預測你是否會以這種層級參 與到這個軟件中來,那麼也可以隨意跳過這一章,而你作為一個Subversion用戶的體驗不會受到任何影響。

Subversion完整參考

本章是用來作為 Subversion 的完整參考手冊,裡面包含了命令列用戶端 (svn) 與其所有的子命令,以及檔案庫管理程式 (svnadmin 與 svnlook) 與其子命令。





分類: Subversion