SVN 專案版本管理之trunk(主線) branch(分支) tag(標記)使用
應用場景:
- 優異的跨平臺支援,對windows平臺支援非常友好。
- 簡單易用,安裝後稍微培訓下就知道怎麼操作。
- 程式碼,需求,文件,涉及稿都可以用svn進行管理,適合不同部門的技術非技術的同事協作。
- 當研發成本比較低,協作開發人數不多,開發人員對於版本管理的水平參差不齊的時候,或者對於程式碼的安全性要求更高一點的時候,適合用svn
SVN倉庫目錄結構Repository:
truck(主幹|主線|主分支):是用來做主方向開發的,新功能的開發應放在主線中,當模組開發完成後,需要修改,就用branch; branch(分支):分支開發和主線開發是可以同時進行的,也就是並行開發,分支通常用於修復bug時使用; tag(標記):用於標記某個可用的版本,可以標記已經上線釋出的版本,也可以標記正在測試的版本,通常是隻讀的;
以上許可權是通過服務端右鍵 Properties for xx目錄來控制該目錄許可權 以及賦予許可權(前提是新增使用者,分組來分配對應的許可權)
SVN具體操作步驟:
一:建立本地倉庫
1. 建立目錄結構D:\TortoiseSVN\Repository\XXX
2. 在該目錄結構上右鍵
---> TortoiseSVN
---> Create repository here(建立倉庫這裡)
---> Create folder structure(建立檔案結構)
---> Start Repobrowser(開始倉庫瀏覽)
---> Ok
最後如下:(branches,tags,trunk是手動建立的檔案結構)
備註:還有一種是通過直接在VisualSvn Server上直接在Repository右鍵Create New Repository 下一步選擇single-projiect-reprository 進行建立帶有檔案結構的倉庫,然後update到本地也是一樣的;
二:將專案上傳到SVN上
桌面(或者檔案下空白處)右鍵 ---> TortoiseSVN
--->repo-browser--> URL: file:///D:/TortoiseSVN/Repository/xxx
---> Ok
--> 選中trunk資料夾右鍵
---> Add folder...
---> 選中要上傳到SVN的專案的最外層目錄,輸入日誌
---> Ok 備註: Check Out 檢出程式碼就不需要講啦
三:開發週期
1.因為專案剛建立,這是在開發新功能,所以要在主線trunk上開發;
2.開發一段時間後,經測試,上線;打包到Tags
在D:\TortoiseSVN\Repository\Source\tags 目錄下新建一個目錄:1.0,並將該目錄提交到SVN上,然後右鍵 D:\TortoiseSVN\Repository\Source\trunk\MyAppProject該目錄 ---> TortoiseSVN ---->Branch/tag... -----> To Path :/tags/1.0/MyAppProject 並選中 Head revision in repository ---> Ok 此時Source/tags/1.0 目錄中沒有任何內容,需要更新一下該 目錄做update操作。更新之後看到一個完整的專案原始碼儲存到該目錄中(該目錄下的原始碼可看做是trunk目錄下版本為1.0的一個 副本);這樣就1.0的版本包就在tags裡面了 備註:以上是在本地倉庫進行建立檔案,在VisualSvn Server也可同樣操作;效果一樣
3.使用者或測試人員反饋應用有重大bug,需要立即修復該bug並儘快上線, 此時程式設計師需要為 tags/1.0 下的MyAppProject 打一 個分支branch, 操作過程如下:
選中Source/tags/1.0/MyAppProject
右鍵 TortoiseSVN---->Branch/tag...
----->ToPath:/branches/MyAppProject
---> Ok 此時看D:\TortoiseSVN\Repository\Source\branches目錄下仍然沒有任何內容,也需要update一下,更新之後發現該目錄下 也出現一個完整的專案程式碼(該程式碼可看做是tags/1.0/MyAppProject的一個副本),注意打分支和打標記都是使用Branch/tag...選單,不同的是To Path 的目錄不一樣,圖解看打分支的圖,只是to path 值不一樣,此時branches/MyAppProject/HomeViewController中的viewDidLoad和tags/1.0/MyAppProject/HomeViewController中的viewDidLoad程式碼完全一致。
4. bug 修復好後,先提交修改的檔案,並進行客戶端App上線,上線完成後再將branches/MyAppProject/打個tag到1.0.1目錄下(tags/1.0.1)(操作步驟同步驟3);
5. 接下來將將trunk 主幹的程式碼合併到branch分支,操作步驟如下:
右鍵 branches/MyAppProject
------>TortoiseSVN
----> Merge...
---> Merge a range of revisions
----> Next
--->URL to merge from : file:///D:/TortoiseSVN/Repository/Repo-iOS/trunk/MyAppProject
(這個路徑是誰,就是合併誰的程式碼)
----> Next
----> Merge
備註:將branch和合併到trunk也是同上只是 右鍵 trunk/MyAppProject ,URL to merge from--...../branch/...
6.此時合併徹底結束,branches目錄下的原始碼如果不想要也可以刪掉,接著修改bug的這位程式設計師需要切換工作空間到主線上來,使用Xcode重新開啟trunk/MyAppProject專案,接著開發尚未完成的新功能。
備註:
1. 分支開發和主幹開發是兩個完全獨立的過程,兩者可以同時進行開發 2. 因分支和主幹開發是並行的,所以兩者可以任意的多次提交當前工程所修改的檔案;