1. 程式人生 > >SVN 專案版本管理之trunk(主線) branch(分支) tag(標記)使用

SVN 專案版本管理之trunk(主線) branch(分支) tag(標記)使用

應用場景:

  1. 優異的跨平臺支援,對windows平臺支援非常友好。
  2. 簡單易用,安裝後稍微培訓下就知道怎麼操作。
  3. 程式碼,需求,文件,涉及稿都可以用svn進行管理,適合不同部門的技術非技術的同事協作。
  4. 當研發成本比較低,協作開發人數不多,開發人員對於版本管理的水平參差不齊的時候,或者對於程式碼的安全性要求更高一點的時候,適合用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. 因分支和主幹開發是並行的,所以兩者可以任意的多次提交當前工程所修改的檔案;