Subversion(SVN)
YehYeh\'s Notepad yehyeh@gmail.com 

Subversion(SVN) - 概述

Subversion是什麼?

  • SubVersioN(SVN)是一套共用資訊的集中管理系統
  • SVN的功能主要有:
    • 集中管理共用資訊
    • 記錄每個版本的異動
    • 版本控制-可隨時取得任意版本
    • 可將各版本互相整合
Δ 回到最上方

多人共同開發的方式

  • 方案1 - 整合(Merge)
    • 各製複製一份回本機修改
    • 各自修改完後,再一一合併成一個檔案
    • 複製修改合併
  • 方案2 - 鎖定(Lock)
    • 修改者將檔案鎖定,修改完解鎖
    • 一次只允許一個人修改
    • 鎖定修改解鎖
  • SVN兩種方案都支援,一般較常用方案一
Δ 回到最上方

SVN的架構

  • SVN的架構如下圖
    Subversion(SVN)架構
  • 伺服端(Server Side):
    • 伺服端需要安裝一套SVN Server
    • Window環境下推薦使用VisualSVN Server
    • SVN Server主要是檔案庫(Repository)及與SVN Client通訊的功能
  • 客戶端(Client Side):
    • 每個客戶端需要安裝一套SVN Client軟體
    • SVN Client的功能主要有
      • 提供SVN指令
      • 提供與檔案庫通訊的能力
      • 檔案異動記錄
    • 常見的SVN Client軟體有
      • TortoiseSVN:使用率最高的SVN Client,與檔案總管整合使用
      • VisualSVN:與Visual Studio整合使用
      • Subclipse :與Eclipse整合使用
  • 伺服端和客戶端可以為同一台電腦,也可以是不同台電腦
Δ 回到最上方

SVN 基本作業流程

  1. 先在SVN Server建立檔案庫
  2. 在檔案庫建立新專案的資料匣,或是用匯入的方式
  3. 開發人員對檔案庫的專案Checkout 在Client建立工作副本
    • 即由檔案庫複製一份專案到Client
  4. 開發人員對工作副本修改
  5. 開發人員執行update 檢查檔案庫是否有較新的檔案,有則下載Client的工作副本
  6. 開發人員執行commit,將工作副本的檔案送交到檔案庫
Δ 回到最上方

SVN的基本術語

  • 檔案庫(Repository)
    • Server上存放檔案的容器
  • 工作副本(Working copy)
    • 由檔案庫複製專案到客戶端的副本
    • 開發人員對此副本作修改
  • 提取(checkout)
    • 會由檔案庫複製一份專案到客戶端,建立工作副本
  • 更新(update)
    • 將工作副本的檔案更新成檔案庫中最新版本
  • 送交(commit)
    • 將對工作副本的修改,送交到檔案庫
  • 修訂版本(Revision)
    • 專案的版本號碼
    • 每次成功commit會產生一個新的版本號碼
  • 最新版(Head)
    • 檔案庫中專案的最新版
  • 主線(Trunk)
    • 專案主要開發及維護的各版本
  • 分支(Branch)
    • 將專案分成多個版本,並行開發
    • SVN中使用copy指令進行分支
  • 標籤(Tag)
    • 將重要版本標記,以便日後找查或抓取
    • SVN中使用copy指令進行標籤
  • 切換(Switch)
    • 將工作副本切換成主線或分支
  • 合併(Merge)
    • 將分支和主線或分支和分支合併
  • 衝突(Conflict)
    • 不同人對同一個檔案進行不同修改
  • 解決(resolve)
    • 標示衝突已處理
Δ 回到最上方