Subversion(SVN) - 工作副本 & 版本號碼
工作副本(Working copy)
- 將專案由檔案庫,複製一份到本機(Client)
- 本機上(Client)的複製版本稱為工作副本
- 使用checkout指令建立工作副本
- 每個參與開發的人員應自行建立各自的工作副本,對工作副本進行開發
Δ 回到最上方
基準版本(Base Reversion)
- 基準版本又稱工作版本
- Checkout時的的版本
- 最後一次執行update時的版本
- SVN用基準版本與工作副本作比較:
- SVN用基準版本與檔案庫的版本作比較:
- 利用基準版本可得知工作副本中的檔案狀態為:
- 未修改 & 未過時
- 已修改 & 末過時
- 未修改 & 已過時
- 已修改 & 已過時
Δ 回到最上方
修訂版本(Revision)
- 修訂版本:每次提交(Commit)即為一個修訂版本
- 每個修訂版本號代表一個樹狀結構
- 修訂版本號是全域性的
- 工作副本隨時可還原任一修訂版本號的檔案和結構
- 修訂版本是一個由0開始且不重複的循序自然數
- 在SVN中Log很重要,commit時一定要填入對應的修改內容
Δ 回到最上方
混合修訂版本
- 工作副本同時含有多個修訂版本
- 專案複雜時,有時想將工作複本中的一部分維持在舊版本
- 對舊版的子模組進行測試
- 原理:
- commit時,有異動的檔案會更新成最新的版本號
- commit時,未異動的檔案會保留原來的版本號
- 限制:
- 若檔案庫中檔案或資料匣的版本比工作副本新,無法commit對檔案或資料匣刪除的動作
- 若目錄描述資訊不是最新版的,則無法commit
- 執行commit後,檔案庫的全部檔案會更新成最新的版本號碼
- 執行update後,工作副本中的檔案會更新成最新的版本號碼
Δ 回到最上方
版本關鍵字
- 修訂版本號碼很難記
- 用版本關鍵字來取代常用的修訂版本
- HEAD:最新版
- BASE:基準版本
- 最後一次update時工作副本的版本號
- 工作副本尚未被修改時的版本號
- COMMITED:
- 最後commit的版本
- 修訂版本號碼 ≤ BASE
- PREV:
- 最後commit版本的前一版
- 修訂版本號碼 = COMMITED - 1
Δ 回到最上方
差異集(Changeset)
- 每次提交(Commit)即為一個修訂版本
- 每個修訂版本號N代表一個樹狀結構
- 差異集為修訂版本號N和N-1之間的變動
Δ 回到最上方
工作副本追蹤原理
- 工作副本:未修改過的最新版
- 執行commit 無動作
- 執行update 無動作
- 工作副本:已修改過的最新版
- 執行commit 上傳修改過的檔案
- 執行update 無動作
- 工作副本:未修改過的過時版本
- 執行commit 無動作
- 執行update 下載最新版本
- 工作副本:已修改過的過時版本
- 執行commit 產生out-of-date錯誤 檔案應該先被更新
- 執行update 試著將最新版檔案與本地更動合併,若subversion無法自動完成,則留給使用者解決
Δ 回到最上方
差異(diff)
- diff:SVN提供的工具,可以比較
- 本地修改前後差異
- 工作副本與其它分支或標籤的差異
- 工作副本與歷史版本(舊版)的差異
- 2個歷史版本間的差異
- 工作副本中,2個檔案之間的差異
- 追溯訊息,如作者、修訂版本號、日期
Δ 回到最上方