svn merge

Posted on Posted in 1.svn

名称

svn merge              — 应用两组源文件的差别到工作拷贝路径。

概要

svn merge [-c M | -r N:M] SOURCE[@REV] [WCPATH]

           

svn merge sourceURL1[@N] sourceURL2[@M] [WCPATH]

           

svn merge sourceWCPATH1@N sourceWCPATH2@M [WCPATH]

                     

描述

第一种和第二种形式里,源路径(第一种是URL,第二种是工作拷贝路径)用修订版本号NM指定,这是要比较的两组源文件,如果省略修订版本号,缺省是HEAD

-c M选项与-r N:M等价,其中N = M-1,使用-c -M则相反:-r M:N,其中N = M-1

第三种形式,SOURCE可以是URL或者工作拷贝项目,与之对应的URL会被使用。在修订版本号NM的URL定义了要比较的两组源。

WCPATH是接收变化的工作拷贝路径,如果省略WCPATH,会假定缺省值“.”,除非源有相同基本名称与“.”中的某一文件名字匹配:在这种情况下,区别会应用到那个文件。

不像svn diff,合并操作在执行时会考虑文件的祖先,当你从一个分支合并到另一个分支,而这两个分支有各自重命名的文件时,这一点会非常重要。

别名

改变

工作拷贝2

是否访问版本库

只有在对URL操作时会

选项

--revision (-r) REV --change (-c) REV --non-recursive (-N) --quiet (-q) --force --dry-run --diff3-cmd CMD --extensions (-x) ARG --ignore-ancestry --username USER --password PASS --no-auth-cache --non-interactive --config-dir DIR

                     

例子

将一个分支合并回主干(假定你有一份主干的工作拷贝,分支在修订版本250创建):

$ svn merge -r 250:HEAD http://svn.red-bean.com/repos/branches/my-branch U  myproj/tiny.txt U  myproj/thhgttg.txt U  myproj/win.txt U  myproj/flo.txt

           

如果你的分支在修订版本23,你希望将主干的修改合并到分支,你可以在你的工作拷贝的分支上这样做:

$ svn merge -r 23:30 file:///tmp/repos/trunk/vendors U  myproj/thhgttg.txt …

           

合并一个单独文件的修改:

$ cd myproj $ svn merge -r 30:31 thhgttg.txt  U  thhgttg.txt