eclipse使用svn

主幹(trunk)、分支(branch )、標記(tag) 用法示例 + 圖解

以svn爲例,git的master至關於trunk,dev分支至關於branchesgit

--------------------------------------------------------------------------------------------------------------------------------------------svn

trunk:是用來作主方向開發的一直向前進行,一個新模塊的開發,這個時候就放在trunk,當模塊開發完成後,須要修改,就用branch。測試

branch:是用來作並行開發的,這裏的並行是指和trunk進行比較。spa

tag:是用來作一個milestone(里程碑)的,無論是否是發佈版本,但都是一個可用的版本,不須要修改若是要修改就要選一個tag進行branche開發。3d

--------------------------------------------------------------------------------------------------------------------------------------------blog

爲何要分3個目錄?且都是重複的代碼Copy有意義嗎?來看下下面這個例子就明白這樣作的好處了。資源

例如:開發一個聊天軟件QQ,第一期只要求軟件具備基本的聊天功能,後期會加入視屏聊天、魔法表情、換皮膚等功能。開發

當第一期開發完,經測試人員測試後沒問題。此時應該給予當前代碼庫打tag命名爲QQ_tag_release_v1.0.0,同時trunk如火如荼進入v2.0.0開發,可是此時經廣大用戶反饋v1.0.0的QQ登陸後常常閃退,因爲v2.0.0正在開發即便bug改了也發佈不了。那麼就要基於QQ_tag_release_v1.0.0的標記(tag)作一個分支(branch)命名爲QQ_branch_bugfix_v1.0.0並基於這個分支快速進行BUG修改,等到BUG修改結束後作一個tag命名爲QQ_tag_release_v1.0.1,根據須要決定QQ_branch_bugfix_v1.0.0是否合併(Merge)併入主幹(trunk)。文檔

步驟:it

一、新建svn倉庫單項目/多項目倉庫均可以,結構以下圖這樣

二、新建資源庫

填寫URL倉庫地址點擊「Finish」

主幹(trunk)、分支(branch )、標記(tag) 用法示例 + 圖解

以下

主幹(trunk)、分支(branch )、標記(tag) 用法示例 + 圖解

新建qq項目導入svn的trun目錄(選中項目右鍵Team-->Share Projects...)

導入後項目後的svn倉庫以下

主幹(trunk)、分支(branch )、標記(tag) 用法示例 + 圖解

因爲緊鑼密鼓的工做v1.0.0終於開發完(v1.0.0只有基本的聊天功能),經測試沒有發現問題能夠提供給用戶使用,同時在此代碼庫上打一個tag版本命名爲QQ_tag_release_v1.0.0

選中項目右鍵 「Team--> 分支/標記... 」 填寫要打tag的版本號後點擊」Next「

主幹(trunk)、分支(branch )、標記(tag) 用法示例 + 圖解

下一步」Next「

主幹(trunk)、分支(branch )、標記(tag) 用法示例 + 圖解

填寫註釋後點擊」Finish「

主幹(trunk)、分支(branch )、標記(tag) 用法示例 + 圖解

這時svn資源庫tag目錄下會多了個QQ_tag_release_v1.0.0

主幹(trunk)、分支(branch )、標記(tag) 用法示例 + 圖解

同時trunk如火如荼進入v2.0.0開發,視屏聊天功能正在開發

看一下這時的svn資源庫

主幹(trunk)、分支(branch )、標記(tag) 用法示例 + 圖解

此時經廣大用戶反饋v1.0.0的QQ登陸後常常閃退,因爲v2.0.0正在開發即便bug改了也發佈不了。那麼就要基於QQ_tag_release_v1.0.0的標記(tag)作一個分支(branch)命名爲QQ_branch_bugfix_v1.0.0

選擇項目右鍵 」Team「-->」切換(S...)「 選擇tags的QQ_tag_release_v1.0.0

主幹(trunk)、分支(branch )、標記(tag) 用法示例 + 圖解

更改路徑後點擊」OK「

主幹(trunk)、分支(branch )、標記(tag) 用法示例 + 圖解

已經切換到標記的QQ_tag_release_v1.0.0

接下來要以QQ_tag_release_v1.0.0 爲基礎建立一個branch名爲QQ_branch_bugfix_v1.0.0並基於這個分支快速進行BUG修改

選中項目右鍵 「Team--> 分支/標記... 」 點擊 」瀏覽...「 選擇branches目錄

主幹(trunk)、分支(branch )、標記(tag) 用法示例 + 圖解

填寫要建立分支(branch)名爲 」QQ_branch_bugfix_v1.0.0「 後點擊 」Next「

主幹(trunk)、分支(branch )、標記(tag) 用法示例 + 圖解

點擊」Next「

主幹(trunk)、分支(branch )、標記(tag) 用法示例 + 圖解

填寫註釋後選中 」切換工做複本爲新的分支/標記「 後 點擊 」Finish「

主幹(trunk)、分支(branch )、標記(tag) 用法示例 + 圖解

看下工做空間的和svn資源庫的變化

主幹(trunk)、分支(branch )、標記(tag) 用法示例 + 圖解

在branch分支名爲 」QQ_branch_bugfix_v1.0.0「 中修改bug

提交修改bug後的代碼

主幹(trunk)、分支(branch )、標記(tag) 用法示例 + 圖解

提交後

閃退bug已經修改能夠提供給用戶使用了,接下來要再打一個tag命名爲 」QQ_tag_release_v1.0.1「

選中名爲」QQ_branch_bugfix_v1.0.0「 的分支項目右鍵 「Team--> 分支/標記... 」 點擊 」瀏覽...「 選擇tags目錄

主幹(trunk)、分支(branch )、標記(tag) 用法示例 + 圖解

填寫要建立標記(tag)名爲 」QQ_tag_release_v1.0.1「 後點擊 」Next「

主幹(trunk)、分支(branch )、標記(tag) 用法示例 + 圖解

點擊」Next「

主幹(trunk)、分支(branch )、標記(tag) 用法示例 + 圖解

填寫註釋信息後點擊」Finish「

主幹(trunk)、分支(branch )、標記(tag) 用法示例 + 圖解

來看看資源庫中有什麼變化,tags目錄下多了一個名爲」QQ_tag_release_v1.0.1「 的標記

主幹(trunk)、分支(branch )、標記(tag) 用法示例 + 圖解

下面演示 將 分支(branches) 合併到 主幹(trunk)

根據須要決定將分支名爲 」QQ_branch_bugfix_v1.0.0「 的branch 合併(Merge)併入主幹(trunk)。

步 驟:

1. 要想將分支合併到主幹,首先須要切換到主幹。在項目上面點右鍵,選擇Team — 切換,URL地址爲主幹的訪問路徑

(略過。。。 上面有)

2. 在項目上面點右鍵,選擇 」Team「--> 」合併(M)...「 ,選中「Reinitegrate a branch」。

主幹(trunk)、分支(branch )、標記(tag) 用法示例 + 圖解

3. 選擇要合併到主幹的分支」QQ_branch_bugfix_v1.0.0「

主幹(trunk)、分支(branch )、標記(tag) 用法示例 + 圖解

4. 點擊」Finish「 結束合併

主幹(trunk)、分支(branch )、標記(tag) 用法示例 + 圖解

5. 點擊」OK「

主幹(trunk)、分支(branch )、標記(tag) 用法示例 + 圖解

6. 若是想要撤銷合併選中項目右鍵」Undo merge...「

主幹(trunk)、分支(branch )、標記(tag) 用法示例 + 圖解

7. trunk中的qq項目下就會多了從分支」QQ_branch_bugfix_v1.0.0「裏Merge合併的代碼

主幹(trunk)、分支(branch )、標記(tag) 用法示例 + 圖解

8. 提交合並後的代碼

主幹(trunk)、分支(branch )、標記(tag) 用法示例 + 圖解

9. 提交後以下

主幹(trunk)、分支(branch )、標記(tag) 用法示例 + 圖解

通常的,咱們的全部的開發都是基於trunk進行開發,當一個版本/release開發告一段落(開發、測試、文檔、製做安裝程序、打包等)結束後,代碼處於凍結狀態(人爲規定,能夠經過hook來進行管理)。此時應該基於當前凍結的代碼庫,打tag。當下一個版本/階段的開發任務開始,繼續在trunk進行開發。此時,若是發現了上一個已發行版本(ReleasedVersion)有一些bug,或者一些很急迫的功能要求,而正在開發的版本(DevelopingVersion)沒法知足時間要求,這時候就須要在上一個版本上進行修改了。應該基於發行版對應的tag,作相應的分支(branch)進行開發。

相關文章
相關標籤/搜索