1. 基礎知識
1) 版本庫佈局
版本庫一般的佈局結構爲trunk(主幹)、branches(分支)、tags(標籤)。
i. trunk主幹
trunk就是開發的主線,一般項目都是導入到主線來開發的。
ii. branches分支
branches一般是trunk某個版本的拷貝,如果你想在某一段時間單獨對某個功能進行開發,而不像和其它功能混在一起,這時候branches是一個很好用的方式。你不會想在trunk裏一直開發這個功能,不提交,直到開發完成吧。一般也會合並的trunk中的。
iii. tags標籤
tags是啥?標籤,顧名思義,就是某個版本的記錄啦,就好像看一本厚厚的,看到哪一頁了,做個記號,方便以後查閱。
迭代開發時,在某個版本發佈應用,爲了做個記錄,這時候打個tag很實用。發佈後,線上出現了一個bug,可以根據這個tag進行修復再發版本。
2. 使用
理解了主幹、分支、標籤的作用,下面說下svn的使用。我在項目中常用的功能一般是checkout、commit、update、分支管理、標籤管理、版本回退。
checkout
代碼檢出比較簡單,執行以下命令,$project_name表示項目名稱:
svn co svn://.../path $project_name
有時想檢出某個歷史版本,$version標識版本號:
svn co svn://.../path@$version $project_name
commit
提交代碼都會用,不多說:
svn ci -m "更新說明"
有時只想提交某個文件:
svn ci path_to_file -m "更新說明"
update
工作中儘量多的update,執行命令
svn update
分支
- 增加分支
增加一個分支,實際上就是把trunk複製到branches目錄下,起一個特定的名字,表示該分支的作用;
svn copy svn://../trunk/project svn://../branches/project_buy -m "添加購買功能分支"
之後就可以在該分支上單獨開發購買功能了,不會影響trunk的正常開發嘍。 - 合併分支
購買分支上的功能開發完畢了,要合併到trunk中;
- 合併到trunk需要在trunk的分支下操作;
svn merge -r r1:r2 svn://../branches/project_buy ./
r1:r2表示從版本記錄r1和r2之間的變化合併到當前工作目錄中。 - 然後提交
svn ci -m "合併購買功能到主幹"
- 刪除分支
有時不需要某些分支了,刪掉
svn delete svn://../branches/project_buy -m "刪除購買功能到主幹"
- 合併到trunk需要在trunk的分支下操作;
標籤
- 標籤創建
svn copy svn://../trunk/project svn://../tags/project_tag1 -m "創建標籤1"
- 標籤刪除
svn rm svn://../tags/project_tag1 -m "刪除標籤1"
版本回退
版本回退這個功能很實用,開發過程中難免思路問題,回退代碼。
- 沒有提交的代碼回退
svn revert svn://../path_to_file
- 已提交代碼回退
svn merge -r r2:r1 svn://../path_to_file merge_file
好面熟啊,這個怎麼跟分支合併差不多尼。本質上是一樣的啦。r2:r1從高版本到低版本可不就是回退了嘛。從低版本到高版本增加記錄,就是添加嘍。
其它一些基礎命令
- 記錄查看log
查看版本歷史記錄
svn log | more
按n進行下翻,按q退出
查看版本歷史記錄,並看修改了哪些文件
svn log -v | more
- 查看文件變化diff
本地文件和版本庫的變化
svn diff path_to_file | more
版本庫版本的變化
svn diff -c r svn://../path_to_file | more
3. 結束語
掌握常用的這幾個svn命令足以對付大部分日常工作了,理解之後,日常svn的操作並不需要工具的。