eclipse使用svn


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

以svn為例,git的master相當於trunk,dev分支相當於branches

--------------------------------------------------------------------------------------------------------------------------------------------

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

branch:是用來做並行開發的,這里的並行是指和trunk進行比較。

tag:是用來做一個milestone(里程碑)的,不管是不是發布版本,但都是一個可用的版本,不需要修改如果要修改就要選一個tag進行branche開發。

--------------------------------------------------------------------------------------------------------------------------------------------

為什么要分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)。

步驟:

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

2、新建資源庫

填寫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)進行開發。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM