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