Subversion (SVN) 淺談

SVN簡介

SVN = 版本控制 + 備份伺服器

簡單的說,您可以把SVN當成您的備份伺服器,更好的是,他可以幫您記住每次上傳到這個伺服器的檔案內容。並且自動的賦予每次的變更一個版本。

TortoiseSVN--SVN簡介

---

基本功能操作

Checkout - 把主機上的檔案或是程式碼取出存到用戶端的電腦裡,建立連動
Update - 更新,下載最新的版本到用戶電腦裡,若資料跟主機一樣新,就不會異動
Commit - 將用戶端的變更上傳至主機
Branch/tag - 用於平行開發分支版本或是將版本定版
Switch - 切換版本

Subversion(SVN)概念與工具介紹
SVN中檢出(check out)、匯出(export)、匯入(import)、add(新增)、update(更新)的區別

---

SVN應用

SVN Repository 基本結構

  • trunk - 主開發目錄 (僅合併不開發)
  • branches - 分支開發目錄
  • tags - 可用穩定版本 (唯讀)

SVN 初始化流程

  1. 創建 repository
  2. 加入成員、設定權限
  3. 建立基本結構目錄 trunk, branches, tags
  4. 設定 properties

SVN 開發流程

  1. 在開發分支(branch)上持續開發
  2. 階段開發結束將branch進度合併至trunk
  3. 將trunk發布為穩定版本(tag)
  4. 建立新的開發分支或原開發分支繼續開發
  5. 持續1~4階段循環至專案結束

SVN 使用案例 - 團隊工具庫 (以UE4為例)

TeamTools

  • trunk
  • branches
    • 4.25-dev
    • 4.26-dev
  • tags
    • 4.25-release-1.0.20
    • 4.25-release-1.1.35
    • 4.26-release-2.0.52
// 由於開發專案時,工具也處於持續開發中的狀態,所以在專案使用以外部連結(external)方式指定專案開發版本(4.x-dev),除非必要(在舊版本重大除錯更新),否則新功能僅在最新開發版本(4.latest)上追加。
// 避免專案開發中需要隨著工具版本更新而重設工具版控路徑的麻煩,dev版本合併trunk後不刪除,唯有公開發布團隊外使用時才需建立tag穩定版本

SVN 使用案例 - 專案開發 (以UE4為例)

MyProject

  • trunk
  • branches
    • dev-featureA
    • dev-featureB
    • dev-featureC
  • tags
    • 4.25-release-1.0.834
    • 4.26-release-2.0.1024
// 若開發分支流程彼此不同則以不同GameMode區隔,除共用資源外專案資料夾結構應避免重複命名以減少版本衝突機會
// 各開發分支可同時進行開發並共享資源與進度,分支階段性開發結束後將版本marge至trunk,各開發分支再從trunk將最新功能marge回開發分支以維持最新進度,欲發布穩定版本時再從trunk建立tag

這個網誌中的熱門文章

Windows10 版本1607後可啟用支援長路徑檔名 (Maximum Path Length Limitation)

標準使用者如何執行需系統管理者權限的程式