SVN当中分支branch(tag标记)的用法

分支(tag标记)
马克- to-win:马克 java社区:防盗版实名手机尾号: 73203。



马克-to-win:有时需要开发一些特殊的版本,比如节日版。就需要打出一个分支去。可能开发完之后,发现他这个特性未来主版本可能用得着,所以就合并回主干来。

1)创建分支:右击项目/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标记技术。我们只需把目录路径中的branch变成tag就行了。实际上tag和branch技术和实现原理是一样的。只不过tag就是能够用名称标记一下,便于记忆。


2)切换分支

右击项目/Team/切换:













你本地就会变成如下的样子:






3)从分支代码合并到主干:

马克-to-win:我们可以对本地的分支版本加一些文件,且改动一些,再减少一些。之后准备合并回主干。

步骤:1)先将本地分支代码更新提交到svn分支去。2)将本地路径切换到需要合并项目的主干去,且update保持代码和服务器一致(见下图)3)右击项目/team/合并。(见下图)现在我们需要将代码从分支合并到主干,所以我们选择第二个选项。(reintegrate a branch)(从图中可以看出来:上面那条线是分支,因为它是从下面那条线分出来挑到上面的。箭头表示它后来又合并回主干了。)之后按照下面的第二张图把源目录(这里即是分支目录)的地址填好。点击OK,它就会将你需要合并的分支代码合并到你的本地(trunk),然后你自己在本地解决冲突,然后再将本地的代码提交到服务器。

































下面给出的,就是当我们在eclipse中点按钮进行前台操作时,svn console当中给出后台实际执行的命令。
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)从主干代码合并到分支:

我们可以对本地的主干版本加一些文件,且改动一些,再减少一些。之后准备合并回分支。

步骤:1)先将本地主干代码更新提交到svn主干去。2)将本地路径切换到需要合并项目的分支去,且update保持代码和服务器一致。3)右击项目/team/合并。现在我们需要将代码从主干合并到分支,所以我们选择第一个选项。(Merge a range of revisions)之后把源目录(这里即是主干目录)的地址填好(/testWeb2)。点击OK,它就会将你需要合并的主干代码合并到你的本地(分支branch),然后你自己在本地解决冲突,然后再将本地的代码提交到服务器。

下面给出的,就是当我们在eclipse中点按钮进行前台操作时,svn console当中给出后台实际执行的命令。
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

注意当你eclipse的项目在分支时,“显示资源历史记录”时只能显示分支上的项目。也就是说你只能切回到分支上的某个版本。


注意在做这部分的实验时,对于我的最新版本的eclipse的svn插件subclipse版本是1.8。所以当把分支上的东西合并到主干时,做法和前面老版本eclipse(subclipse是1.7)不一样。所有步骤中前面的做法是一样的。当eclipse切换到主干以后,想合并时,弹出的窗口里没有了reintegrate a branch那个选项。这时我们只能用第一个选项(Merge a range of revisions),继续往下做时会报一个错(svn: E200007: Runner for 'org.tmatesoft.svn.core.wc2.SvnMerge' command have not been found; probably not yet implement in this API.),所以我们还需要,改动一下eclipse的设置。(见下图)






















之后回来我们合并时,会出现以下的窗口。注意下图这里填的目标和源和以前的不一样。
起始路径:trunk版的路径,
目标路径:从哪里获取改动【这里是分支路径】




















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