2012年10月28日星期日

SVN merge 使用方法

SVN merge 使用方法

1. merge sourceURL1[@N] sourceURL2[@M] [WCPATH]

sourceURL1,sourceURL2的含义并不是两个分支,或者一个分支一个主干,而是同一个分支的两个版本。对这两个版本做一个diff,然后把diff的结果,应用到最后的参数WCPATH上,WCPATH代表是一个本地已经checkout的工作区,如果不写,则表示是当前路径“./”。

使用该命令可以将branch上的改动merge到trunk上,如在trunk版本为100的时候拉出一个branch,版本号为101.当branch开发到150版本时,需要把branch上的改动merge到trunk上。则可以使用命令:

$ svn merge https://svn.proj.com/proja/branches/proja_branch_1@101 https://svn.proj.com/proja/branches/proja_branch_1 ./

2. merge sourceWCPATH1@N sourceWCPATH2@M [WCPATH]

此命令与上条命令类似,只不过参数变成了工作路径而不是url。

3. merge [-c M[,N...] | -r N:M ...] SOURCE[@REV] [WCPATH]
选项说明:

-r [--revision] ARG:表示版本号,ARG一般可以有以下几种:

  • NUMBER:版本号
  • '{'DATE'}':开始时间为DATE的版本
  • ‘HEAD’:版本库中最新的版本
  • ‘BASE’:工作路径中的BASE版本
  • ‘COMMITTED’:BASE版本最近的一次commit版本
  • ‘PREV’:COMMITTED之前的那个版本

-c [--change] ARG: 表示更改,ARG的定义与上面相同。

该命令中,SOURCE可以为url或者工作路径.

-r与-c的最终作用是相同的,都是将版本号为N和M的SOURCE(可以是URL或者是工作拷贝路径)进行diff后,将更改应用到WCPATH(如果为空,则默认为当前路径)。“-c M”相当于“-r <M-1>:M”,“-c -M”相当于“-r M:<M-1>”。如果范围未指定,默认的则为“0:REV”。

4. 使用merge命令回滚代码

如果代码提交后发现需要回滚到旧的版本,则可以使用merge来完成该操作。

svn merge -r new:old SOURCE WCPATH

其中new是当前最新版本,old是要回滚到的版本,SOURCE为要回滚的svn路径,WCPATH为当前工作路径。


TAG: