Subversion(SVN) - 檔案庫
檔案庫(Repository)
- 檔案庫(Repository)
- 集中儲存資料的地方
- 以目錄和檔案的結構儲存
- 位在Server上
- Server和Client可以是同一台電腦
- 檔案庫存取的URL
Schema 說明 file:/// 直接存取檔案庫(檔案庫位於本地端硬碟上)
$ svn checkout file://localhost/path/to/repos
$ svn checkout file:///path/to/repos --省略localhost/
C:\> svn checkout file:///X:/path/to/repos
C:\> svn checkout "file:///X|/path/to/repos"http:// 經WebDAV通訊協定, 連接到已知的SVN的Apache伺服器 https:// 與 http://相同,但是有SSL加密 svn:// 經自訂通訊協定的未授權TCP/IP連線,連接到svnserve伺服器 svn+ssh:// 經自訂通訊協定的已認證加密TCP/IP連線,連接到svnserve伺服器 - 那些檔案應該放到檔案庫?
- 應該放到檔案庫
- 程式、組態檔、makefile、測試資料
- 專案相關文件、會議記錄、FAQ、....
- 不應該放到檔案庫
- 衍生的檔案
- 如.o、.obj、可以用工具快速產生的檔案
- 理由:
- 隨時可以產生
- 不是建置軟體的必要因素
- 重複的資訊、容易造成檔案不一致
- 衍生的檔案
- 應該放到檔案庫
檔案庫的建議架構
- 檔案庫的建議架構
- 主線(trunk)
- 存放專案主要開發版本
- 程式主要功能的維護與開發
- 標籤(tags)
- 存放專案的重要版本、里程碑
- 正式版V1, XX功能完成版, 正式版V2
- 分支(branches)
- 存放進行測試、除錯、開發中的版本、修正版
- 修正版, 開發中的新功能
- Trunk、Tags、Branches的修訂版本號碼是共用的
分支(Branch)
- 分支的功用
- 多人同時開發:各自開發一個分支,再整合回主線
- 多團隊開發:各自開發一個分支,再整合回主線
- 新功能開發:以新分支開發,避免影響主線
- 新版本開發:以新分支開發,避免影響主線
- 修正版:產品有Bug時,先在分支上開發暫時修正版,主線上開發完整解法
- 分支應時時和主線(Trunk)保持同步 避免整合回主線時發現出乎意料的衝突
- 假設A在分支上開發,B在主線上開發
- 每當B在主線上開發一個段落(例如完成一個功能)
- A應該將主線上的異動整合到分支
- 避免分支和主線漸行漸遠,等分支開發完成時難以整合
- 廉價複製(Cheap Copy):
- 並未真的複製檔案,而是用內部鏈結指向某一版本樹
- SVN中使用Cheap Copy建立Branch和Tag
- 分支的建立方式
- Basically Stable
- 所有開發、錯誤修正、QA(Quality Assurance)都在Branch上進行
- 測試無誤後才放到Trunk
- Basically Unstable
- 所有開發、錯誤修正、QA(Quality Assurance)都在Trunk上進行
- Release時才建立Branch進行測試
- Basically Stable
標籤 V.S. 分支
- 標籤(Tags)
- 靜態 - 不會隨著專案發展而變化
- 用途:標示重要版本
- Don’t commit to tags
- V1.0、V2.0、 XX_Function、 OO_Function
- 分支(Branches)
- 動態 – 開發新功能或新版本可以建立分支
- 用途:多人同時開發、新功能開發、新版本開發、修正版
- 通常會再與主線(Trunk)合併(Merge)
- XX_Beta1、OO_Beta3