SVN當(dāng)中分支branch(tag標(biāo)記)的用法

分支(tag標(biāo)記)
馬克- to-win:馬克 java社區(qū):防盜版實名手機尾號: 73203。



馬克-to-win:有時需要開發(fā)一些特殊的版本,比如節(jié)日版。就需要打出一個分支去??赡荛_發(fā)完之后,發(fā)現(xiàn)他這個特性未來主版本可能用得著,所以就合并回主干來。

1)創(chuàng)建分支:右擊項目/Team/Branch-Tag















記住勾上create any immidiate folders that are missing,否則無法拷貝進入,因為branch目錄不存在。

copy -rHEAD http://dell/svn/myRepositories/testWeb2 http://dell/svn/myRepositories/branch/testWeb2


看著上圖,我們就知道。如果我們要是想用tag標(biāo)記技術(shù)。我們只需把目錄路徑中的branch變成tag就行了。實際上tag和branch技術(shù)和實現(xiàn)原理是一樣的。只不過tag就是能夠用名稱標(biāo)記一下,便于記憶。


2)切換分支

右擊項目/Team/切換:













你本地就會變成如下的樣子:






3)從分支代碼合并到主干:

馬克-to-win:我們可以對本地的分支版本加一些文件,且改動一些,再減少一些。之后準(zhǔn)備合并回主干。

步驟:1)先將本地分支代碼更新提交到svn分支去。2)將本地路徑切換到需要合并項目的主干去,且update保持代碼和服務(wù)器一致(見下圖)3)右擊項目/team/合并。(見下圖)現(xiàn)在我們需要將代碼從分支合并到主干,所以我們選擇第二個選項。(reintegrate a branch)(從圖中可以看出來:上面那條線是分支,因為它是從下面那條線分出來挑到上面的。箭頭表示它后來又合并回主干了。)之后按照下面的第二張圖把源目錄(這里即是分支目錄)的地址填好。點擊OK,它就會將你需要合并的分支代碼合并到你的本地(trunk),然后你自己在本地解決沖突,然后再將本地的代碼提交到服務(wù)器。

































下面給出的,就是當(dāng)我們在eclipse中點按鈕進行前臺操作時,svn console當(dāng)中給出后臺實際執(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)從主干代碼合并到分支:

我們可以對本地的主干版本加一些文件,且改動一些,再減少一些。之后準(zhǔn)備合并回分支。

步驟:1)先將本地主干代碼更新提交到svn主干去。2)將本地路徑切換到需要合并項目的分支去,且update保持代碼和服務(wù)器一致。3)右擊項目/team/合并?,F(xiàn)在我們需要將代碼從主干合并到分支,所以我們選擇第一個選項。(Merge a range of revisions)之后把源目錄(這里即是主干目錄)的地址填好(/testWeb2)。點擊OK,它就會將你需要合并的主干代碼合并到你的本地(分支branch),然后你自己在本地解決沖突,然后再將本地的代碼提交到服務(wù)器。

下面給出的,就是當(dāng)我們在eclipse中點按鈕進行前臺操作時,svn console當(dāng)中給出后臺實際執(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的項目在分支時,“顯示資源歷史記錄”時只能顯示分支上的項目。也就是說你只能切回到分支上的某個版本。


注意在做這部分的實驗時,對于我的最新版本的eclipse的svn插件subclipse版本是1.8。所以當(dāng)把分支上的東西合并到主干時,做法和前面老版本eclipse(subclipse是1.7)不一樣。所有步驟中前面的做法是一樣的。當(dāng)eclipse切換到主干以后,想合并時,彈出的窗口里沒有了reintegrate a branch那個選項。這時我們只能用第一個選項(Merge a range of revisions),繼續(xù)往下做時會報一個錯(svn: E200007: Runner for 'org.tmatesoft.svn.core.wc2.SvnMerge' command have not been found; probably not yet implement in this API.),所以我們還需要,改動一下eclipse的設(shè)置。(見下圖)






















之后回來我們合并時,會出現(xiàn)以下的窗口。注意下圖這里填的目標(biāo)和源和以前的不一樣。
起始路徑:trunk版的路徑,
目標(biāo)路徑:從哪里獲取改動【這里是分支路徑】




















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