truck(主幹|主線|主分支):是用來做主方向開發的,新功能的開發應放在主線中,當模塊開發完成後,需要修改,就用branch;
branch(分支):分支開發和主線開發是可以同時進行的,也就是並行開發,分支通常用於修復bug時使用;
tag(標記):用於標記某個可用的版本,可以標記已經上線發佈的版本,也可以標記正在測試的版本,通常是隻讀的;
以上權限是通過服務端右鍵 Properties for xx目錄來控制該目錄權限 以及賦予權限(前提是添加用戶,分組來分配對應的權限)
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到本地也是一樣的;
桌面(或者文件下空白處)右鍵
---> 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. 因分支和主幹開發是並行的,所以兩者可以任意的多次提交當前工程所修改的文件;