SVN當(dāng)中分支branch(tag標(biāo)記)的用法
分支(tag標(biāo)記)
馬克- to-win:馬克 java社區(qū):防盜版實(shí)名手機(jī)尾號(hào): 73203。
馬克-to-win:有時(shí)需要開發(fā)一些特殊的版本,比如節(jié)日版。就需要打出一個(gè)分支去??赡荛_發(fā)完之后,發(fā)現(xiàn)他這個(gè)特性未來(lái)主版本可能用得著,所以就合并回主干來(lái)。
1)創(chuàng)建分支:右擊項(xiàng)目/Team/Branch-Tag
記住勾上create any immidiate folders that are missing,否則無(wú)法拷貝進(jìn)入,因?yàn)閎ranch目錄不存在。
copy -rHEAD http://dell/svn/myRepositories/testWeb2 http://dell/svn/myRepositories/branch/testWeb2
看著上圖,我們就知道。如果我們要是想用tag標(biāo)記技術(shù)。我們只需把目錄路徑中的branch變成tag就行了。實(shí)際上tag和branch技術(shù)和實(shí)現(xiàn)原理是一樣的。只不過(guò)tag就是能夠用名稱標(biāo)記一下,便于記憶。
2)切換分支
右擊項(xiàng)目/Team/切換:
你本地就會(huì)變成如下的樣子:
3)從分支代碼合并到主干:
馬克-to-win:我們可以對(duì)本地的分支版本加一些文件,且改動(dòng)一些,再減少一些。之后準(zhǔn)備合并回主干。
步驟:1)先將本地分支代碼更新提交到svn分支去。2)將本地路徑切換到需要合并項(xiàng)目的主干去,且update保持代碼和服務(wù)器一致(見下圖)3)右擊項(xiàng)目/team/合并。(見下圖)現(xiàn)在我們需要將代碼從分支合并到主干,所以我們選擇第二個(gè)選項(xiàng)。(reintegrate a branch)(從圖中可以看出來(lái):上面那條線是分支,因?yàn)樗菑南旅婺菞l線分出來(lái)挑到上面的。箭頭表示它后來(lái)又合并回主干了。)之后按照下面的第二張圖把源目錄(這里即是分支目錄)的地址填好。點(diǎn)擊OK,它就會(huì)將你需要合并的分支代碼合并到你的本地(trunk),然后你自己在本地解決沖突,然后再將本地的代碼提交到服務(wù)器。
下面給出的,就是當(dāng)我們?cè)趀clipse中點(diǎn)按鈕進(jìn)行前臺(tái)操作時(shí),svn console當(dāng)中給出后臺(tái)實(shí)際執(zhí)行的命令。
merge --reintegrate http://dell/svn/myRepositories/branch/testWeb2 D:/eclipseJee/testWeb2
--- Merging differences between repository URLs into D:/eclipseJee/testWeb2
U D:/eclipseJee/testWeb2/src/com/HelloWorld.java
A D:/eclipseJee/testWeb2/src/com/Branch.java
D D:/eclipseJee/testWeb2/WebContent/wanzi.jsp
Merge info recorded for D:/eclipseJee/testWeb2
Merge complete.
===== File Statistics: =====
Deleted: 1
Added: 1
Updated: 1
==== Property Statistics: =====
Updated: 1
4)從主干代碼合并到分支:
我們可以對(duì)本地的主干版本加一些文件,且改動(dòng)一些,再減少一些。之后準(zhǔn)備合并回分支。
步驟:1)先將本地主干代碼更新提交到svn主干去。2)將本地路徑切換到需要合并項(xiàng)目的分支去,且update保持代碼和服務(wù)器一致。3)右擊項(xiàng)目/team/合并?,F(xiàn)在我們需要將代碼從主干合并到分支,所以我們選擇第一個(gè)選項(xiàng)。(Merge a range of revisions)之后把源目錄(這里即是主干目錄)的地址填好(/testWeb2)。點(diǎn)擊OK,它就會(huì)將你需要合并的主干代碼合并到你的本地(分支branch),然后你自己在本地解決沖突,然后再將本地的代碼提交到服務(wù)器。
下面給出的,就是當(dāng)我們?cè)趀clipse中點(diǎn)按鈕進(jìn)行前臺(tái)操作時(shí),svn console當(dāng)中給出后臺(tái)實(shí)際執(zhí)行的命令。
merge http://dell/svn/myRepositories/testWeb2 D:/eclipseJee/testWeb2
--- Merging r25 through r30 into D:/eclipseJee/testWeb2
A D:/eclipseJee/testWeb2/src/com/Trunk.java
C D:/eclipseJee/testWeb2/WebContent/wanzi.jsp
U D:/eclipseJee/testWeb2
Merge info recorded for D:/eclipseJee/testWeb2
Merge complete.
===== File Statistics: =====
Added: 1
==== Property Statistics: =====
Updated: 2
==== Conflict Statistics: =====
Tree conflicts: 1
注意當(dāng)你eclipse的項(xiàng)目在分支時(shí),“顯示資源歷史記錄”時(shí)只能顯示分支上的項(xiàng)目。也就是說(shuō)你只能切回到分支上的某個(gè)版本。
注意在做這部分的實(shí)驗(yàn)時(shí),對(duì)于我的最新版本的eclipse的svn插件subclipse版本是1.8。所以當(dāng)把分支上的東西合并到主干時(shí),做法和前面老版本eclipse(subclipse是1.7)不一樣。所有步驟中前面的做法是一樣的。當(dāng)eclipse切換到主干以后,想合并時(shí),彈出的窗口里沒有了reintegrate a branch那個(gè)選項(xiàng)。這時(shí)我們只能用第一個(gè)選項(xiàng)(Merge a range of revisions),繼續(xù)往下做時(shí)會(huì)報(bào)一個(gè)錯(cuò)(svn: E200007: Runner for 'org.tmatesoft.svn.core.wc2.SvnMerge' command have not been found; probably not yet implement in this API.),所以我們還需要,改動(dòng)一下eclipse的設(shè)置。(見下圖)
之后回來(lái)我們合并時(shí),會(huì)出現(xiàn)以下的窗口。注意下圖這里填的目標(biāo)和源和以前的不一樣。
起始路徑:trunk版的路徑,
目標(biāo)路徑:從哪里獲取改動(dòng)【這里是分支路徑】
merge --depth=infinity http://dell/svn/myRepositories/testWeb2@HEAD http://dell/svn/myRepositories/branch/testWeb2@HEAD C:/Documents and Settings/dell/eclipse-workspace/testWeb2
--- Merging differences between repository URLs into C:/Documents and Settings/dell/eclipse-workspace/testWeb2
A C:/Documents and Settings/dell/eclipse-workspace/testWeb2/src/com/Branch.java
A C:/Documents and Settings/dell/eclipse-workspace/testWeb2/src/com/Branch1.java
Merge info recorded for C:/Documents and Settings/dell/eclipse-workspace/testWeb2
Merge complete.
===== File Statistics: =====
Added: 2
==== Property Statistics: =====
Updated: 1