Subversion(SVN) - 概述
Subversion是什麼?
- SubVersioN(SVN)是一套共用資訊的集中管理系統
- SVN的功能主要有:
- 集中管理共用資訊
- 記錄每個版本的異動
- 版本控制-可隨時取得任意版本
- 可將各版本互相整合
Δ 回到最上方
多人共同開發的方式
- 方案1 - 整合(Merge)
- 各製複製一份回本機修改
- 各自修改完後,再一一合併成一個檔案
- 複製修改合併
- 方案2 - 鎖定(Lock)
- 修改者將檔案鎖定,修改完解鎖
- 一次只允許一個人修改
- 鎖定修改解鎖
- SVN兩種方案都支援,一般較常用方案一
Δ 回到最上方
SVN的架構
- SVN的架構如下圖
- 伺服端(Server Side):
- 伺服端需要安裝一套SVN Server
- Window環境下推薦使用VisualSVN Server
- SVN Server主要是檔案庫(Repository)及與SVN Client通訊的功能
- 客戶端(Client Side):
- 每個客戶端需要安裝一套SVN Client軟體
- SVN Client的功能主要有
- 提供SVN指令
- 提供與檔案庫通訊的能力
- 檔案異動記錄
- 常見的SVN Client軟體有
- 伺服端和客戶端可以為同一台電腦,也可以是不同台電腦
Δ 回到最上方
SVN 基本作業流程
- 先在SVN Server建立檔案庫
- 在檔案庫建立新專案的資料匣,或是用匯入的方式
- 開發人員對檔案庫的專案Checkout 在Client建立工作副本
- 開發人員對工作副本修改
- 開發人員執行update 檢查檔案庫是否有較新的檔案,有則下載Client的工作副本
- 開發人員執行commit,將工作副本的檔案送交到檔案庫
Δ 回到最上方
SVN的基本術語
- 檔案庫(Repository):
- 工作副本(Working copy):
- 由檔案庫複製專案到客戶端的副本
- 開發人員對此副本作修改
- 提取(checkout):
- 更新(update):
- 送交(commit):
- 修訂版本(Revision):
- 專案的版本號碼
- 每次成功commit會產生一個新的版本號碼
- 最新版(Head):
- 主線(Trunk):
- 分支(Branch):
- 將專案分成多個版本,並行開發
- SVN中使用copy指令進行分支
- 標籤(Tag):
- 將重要版本標記,以便日後找查或抓取
- SVN中使用copy指令進行標籤
- 切換(Switch):
- 合併(Merge):
- 衝突(Conflict):
- 解決(resolve):
Δ 回到最上方