TortoiseSVN (以下簡稱 SVN)很早就接觸了,斷斷續(xù)續(xù)的用,但一直都沒有太深入的學習和使用。最近的項目需要用到 SVN 做版控制,重新拾起,現(xiàn)學現(xiàn)賣,做個記錄。
- 安裝等基礎(chǔ)不屬于本文范疇,本文僅記錄 SVN 的用法;
- TortoiseSVN 僅適用于 windows 系統(tǒng);

目錄
- 一、初始化項目
- 1.1 初始化工程目錄
- 二、創(chuàng)建分支(Branches)并提及修改
- 三、合并操作(Merge)
- 四、創(chuàng)建標簽(Tags)
- 五、常見問題
一、初始化項目
安裝完成后,右鍵菜單會多出兩個選項,通過 【TortoiseSVN】 項就可以進行更多操作。

右鍵 - 【TortoiseSVN】 - 【Repo-browser】,打開進入倉庫管理界面【Repository Browser】。

在左側(cè) 【svn://*****/】上點右鍵,選擇【Create folder...】創(chuàng)建一個新的工作目錄。

在創(chuàng)建的目錄上繼續(xù)點擊右鍵,選擇【Checkout...】,將新創(chuàng)建的項目檢出到本地。


1.1 初始化工程目錄
打開檢出的文件夾,在其中新建 branches、tags、trunk 三個目錄,分別代表 分支、標簽以及主干。
- branches 分支,分支基于主干(Trunk)的代碼創(chuàng)建,所有的開發(fā)均使用分支目錄,最終提交(Commit)到遠程分支,再合并(Merge)到主干(Trunk);
- tags 標簽,標簽常用作版本記錄,它可以認為是 GitHub 上的 release 版本;
- trunk 主干,所有的分支(Branches)都會合并(Merge)到主干目錄中,然后就可以基于主干代碼發(fā)布到 tags 中,它可以認為是 GitHub 上的 master 分支。
把目錄添加到 svn 中,并提交到遠程倉庫。


這樣就算是建好一個項目了。和 GitHub 類似,我們現(xiàn)在的角色是項目創(chuàng)建者。
二、創(chuàng)建分支(Branches)并提及修改
在主干(Trunk)目錄上右鍵,選擇【TortoiseSVN】-【Branches/tag...】創(chuàng)建分支。

建立好項目并檢出到本地后,我們就可以在本地進行項目的初始化構(gòu)建了,我們可以往其中添加一些文件作為最初的版本,然后右鍵-【TortoiseSVN】-【Add...】,最后右鍵 -【SVN Commit...】提交到 SVN 服務器上的主干代碼中,以后的開發(fā)就從這個最原始的主干代碼開始。
三、合并(Merge)分支(Branches)到主干(Trunk)
SVN 的合并操作咋一聽還是很繞的:我們平時講“合并到主干”,看上去是應該是把分支合并到主干,即 分支→主干,但實際操作中卻是反向操作的,即 把來自分支的代碼合并到主干。也就是說:合并(Merge)操作是在主干(Trunk)目錄上執(zhí)行的右鍵操作?。?!





所以,我們直接從分支上點右鍵合并是會出錯的,所以 GitHub 有一個叫做合并請求(pull requests) 的操作,合并請求在主干trunk(或 master)上操作,合并來自分支的‘合并請求’。
四、創(chuàng)建標簽(Tags)
創(chuàng)建標簽太簡單了,直接在主干上點右鍵,仍然選擇【TortoiseSVN】-【Branches/tag...】,但這次選擇的保存路徑(To path)是 tags 目錄。

標簽可以理解為一個正式的版本,其中的代碼一般為只讀狀態(tài)(這個需要在 SVN 環(huán)境所在的服務器上對目錄做讀寫權(quán)限設置吧),一般一個大功能完成都會做一個 tag,它可以認為是 GitHub 上的 release 版本。

五、常見問題
5.1 拖拽文件
在 Repository Browser 界面中,我們可以直接使用鼠標進行文件的拖拽操作,不管是拖入還是拖出,但該操作會阻塞住界面,出現(xiàn) Repository Browser 假死的狀態(tài),特別是比較大的文件,尤其嚴重,不過沒關(guān)系,耐心等它把文件傳完即可。拖拽出的文件不具有版本屬性。拖入文件時類似 add 操作!
5.2 倉庫地址變更
在磁盤中找到當前項目,直接在項目目錄上點擊右鍵,選擇【TortoiseSVN】-【Relocate】。

在打開的界面中填入新的地址并根據(jù)引導一步一步完成遷移即可!
參考資料