SVN快速使用總結

本文總結了完成一個需求開發所需知道的SVN基本指令。

一般開發流程

各環節SVN基本命令

獲取代碼(更新代碼)

第一次從倉庫裏獲取代碼

$ svn checkout [your_repository_url]

如果已有本地代碼,則需要更新代碼,確保在最新代碼上開發

$ cd [your_local_codes_path]
$ svn update

新建分支

SVN倉庫中,trunk分支一般存放通過測試的最新代碼,因此不應該在該分支下修改代碼。合理的做法是:從trunk分支切出一個feature分支,然後在該分支下修改代碼,直到測試通過後合併到trunk分支。

建立分支

$ svn copy [your_trunk_url] [your_feature_branch_url] -m [your_log]

-m 填寫建立分支的日誌

切換分支

從trunk分支切換到feature分支

$ svn switch [your_feature_branch_url]

查看分支

切換分支後就可以進行代碼修改。修改一段時間後,如果想了解當前分支文件的狀態,可以通過以下命令:

$ svn status

該命令顯示的格式爲:狀態 文件,常見的狀態有:

字符 狀態 說明
A 添加 與上一版相比增加的文件
C 衝突 該文件衝突
D 刪除 該文件已從倉庫刪除,以後SVN不再跟蹤版本
M 修改 該文件被修改過
S 處於其他分支 當前分支的子路徑處於其他分支
? 未納入版本管理 通常是新增文件,SVN還沒跟蹤該文件的版本。可以使用svn add把文件加入SVN,此時再運行svn status時,文件的狀態就顯示爲A
! 文件缺失 SVN找不到該文件。一般出現在沒有使用SVN命令刪除文件的情況。當需要從倉庫刪除某文件時,應該使用svn delete,這樣文件的狀態就變爲D,提交以後該文件的版本就不再被跟蹤

提交分支(解決衝突)

開發完成後向遠程分支提交代碼

$ svn commit -m [your_log]

一般情況下代碼就提交到遠程分支了,但是如果有人和你修改了同一段代碼,並且先提交到了遠程分支,就會導致本次提交失敗,此時需要先解決衝突再提交代碼。

解決衝突

更新代碼,顯示衝突

$ svn update
$ Conflict discovered in [your file]
  Select: (p) postpone, (df) diff-full, (e) edit,
  (mc) mine-conflict, (tf) theirs-conflict,
  (s) show all options:
符號 說明
p 標記衝突,暫不處理
df 顯示所有衝突
e 編輯衝突
mc 衝突以本地文件爲準
tf 衝突以遠程倉庫爲準
s 顯示所有選項

一般先輸入df命令看衝突是否嚴重,如果不嚴重則通過e直接編輯,編輯頁面通常爲

<<<<<<< .mine
[your_version]
=======
[their_version]
>>>>>>> [version]

<<<<<<< .mine>>>>>>> [version]之間解決衝突,然後保存。回到Select界面,此時會多出一個(r) resolve的命令。輸入r通知SVN已解決衝突。

使用postpone解決衝突

如果衝突很嚴重,需要和提交者討論解決,可以輸入p標記,此時輸入svn status顯示:

 C [your_file]
 ? [your_file].working
 ? [your_file].merge-left.[version]
 ? [your_file].merge-right.[version]
文件 說明
[your_file] 所有衝突標記在該文件
[your_file].working 當前工作副本
[your_file].merge-left.[version] 產生衝突前基礎版本
[your_file].merge-right.[version] 倉庫裏的最新版本

用以下命令解決衝突

$ svn resolve --accept [base | working | mine-conflict | theirs-conflict | mine-full | theirs-full] [conflicting file] 
參數 說明
base 將[your_file].merge-left.[version]做爲最終結果
working 把[your_file]解決衝突後的結果做爲最終結果
mine-conflict 將[your_file].working做爲最終結果
theirs-conflict 將[your_file].merge-right.[version]做爲最終結果
mine-full 將所有[your_file].working做爲最終結果
theirs-full 將所有[your_file].merge-right.[version]做爲最終結果

解決衝突後,文件狀態變爲M,這時再向倉庫提交代碼即可。

合併分支

feature分支通過測試後就可以合併到trunk分支。首先切換到trunk分支,然後執行以下命令

$ svn merge [your_feature_branch_url]

merge還具有回滾的功能:svn merge -r old:new .。注意不要少最後一個點,這表示把new版本會滾到old版本

順利的話,feature分支就合併到trunk分支了,但是如果有別人和你修改了同一段代碼並且提交到trunk分支就可能再次出現衝突。同樣先解決衝突再提交。

刪除分支

完成功能開發,合併到trunk後,刪除feature分支

$ svn delete [your_feature_branch_url] -m [your_log]

結束

以上就是開發過程中常用的SVN命令,當然SVN的命令是非常豐富的,想要更強大的功能可以通過svn help來進一步學習。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章