首页 > SVN > svn merge-将两个源差异应用至工作副本

svn merge-将两个源差异应用至工作副本

2011年1月4日 发表评论 阅读评论
merge: 将两个源差异应用至工作副本。
用法:  1. merge sourceURL1[@N] sourceURL2[@M] [WCPATH]
       2. merge sourceWCPATH1@N sourceWCPATH2@M [WCPATH]
       3. merge [-c M[,N...] | -r N:M ...] SOURCE[@REV] [WCPATH]

  1、第一种形式中,源 URL 的版本 N 与 M 作为比较的来源。如果没有指定版本,默认
     为 HEAD。

  2、在第二种形式中,两个源工作副本路径对应的版本库中的 URL 作为比较的来源。这
     里必须指定版本。

  3、第三种形式中,SOURCE 可为 URL 或工作副本中的路径(后者会使用版本库中对应
     的 URL)。比较版本为 REV 的 SOURCE,就像它在版本 N 到 M 存在一样。如果没
     有给出 REV,默认为 HEAD。选项 “-c M” 等价于 “-r :M”,“-c -M” 与之
     相反,等价于 “-r M:”。如果没有指定版本范围,默认为 0:REV。可以指定
     多个 “-c” 或 “-r”,并且可以混合使用向前范围或向后范围。

  WCPATH 是接收修改的工作副本路径。如果省略了 WCPATH,默认为 “.”,除非来源中
  有与当前目录内同名的文件,这时修改会直接应用至该文件。

  注意:  Subversion 只有当两个合并源有继承关系的时候才会内部跟踪合并操作的源数
  据 -- 即如果第一个合并源是第二个的祖先,或者相反。在上述的第三种形式中,已经
  保证了满足条件。选项 --ignore-ancestry 忽略继承关系,强制 Subversion 认为合并
  源之间没有关系,不跟踪本次合并。

有效选项:
  -r [--revision] ARG      : ARG (一些命令也接受ARG1:ARG2范围)
                             版本参数可以是如下之一: 
                                NUMBER       版本号
                                '{' DATE '}' 在指定时间以后的版本
                                'HEAD'       版本库中的最新版本
                                'BASE'       工作副本的基线版本
                                'COMMITTED'  最后提交或基线之前
                                'PREV'       COMMITTED的前一版本
  -c [--change] ARG        : 在ARG版本(如同 -r ARG-1:ARG)作的修改
                             如果ARG为负数则等价于 -r ARG:ARG-1
  -N [--non-recursive]     : 过时;尝试 --depth=files 或 --depth=immediates
  --depth ARG              : 受深度参数 ARG(“empty”,“files”,“immediates”,或“infinity”) 约束的操作
  -q [--quiet]             : 不打印信息,或只打印概要信息
  --force                  : 强制操作运行
  --dry-run                : 尝试操作但没有修改
  --diff3-cmd ARG          : 使用 ARG 作为合并命令
  --record-only            : 标记版本为已合并(使用 -r 参数)
  -x [--extensions] ARG    : 缺省: “-u”。当 Subversion 调用外部比较程序时,ARG 直接传给它。但是当
                             Subversion 使用缺省的内置比较实现,或者正
                             显示追溯时, ARG 可以是: 
                                -u (--unified):
                                   输出三行统一上下文。
                                -b (--ignore-space-change):
                                   忽略空白数量的修改。
                                -w (--ignore-all-space):
                                   忽略所有的空白。
                                --ignore-eol-style:
                                   忽略行尾样式的改变。                            -p (--show-c-function):
                                   在比较输出中显示 C 函数名称。
  --ignore-ancestry        : 合并时忽略原始信息
  --accept ARG             : 指定自动解决冲突动作
                            ('postpone', 'base', 'mine-conflict',
                             'theirs-conflict', 'mine-full', 'theirs-full',
                             'edit', 'launch')
  --reintegrate            : 批量合并所有源 URL 中未合并的修改

全局选项:
  --username ARG           : 指定用户名称 ARG
  --password ARG           : 指定密码 ARG
  --no-auth-cache          : 不要缓存用户认证令牌
  --non-interactive        : 不要交互提示
  --trust-server-cert      : 不提示的接受未知的 SSL 服务器证书(只用于选项 “--non-interactive”)
  --config-dir ARG         : 从目录 ARG 读取用户配置文件
  --config-option ARG      : 以下属格式设置用户配置选项:
                                 FILE:SECTION:OPTION=[VALUE]
                             例如:
                                 servers:global:http-library=serf

常用操作
1.将一个分支合并回主干(假定你有一份主干的工作拷贝,分支在修订版本250创建):
$ svn merge -r 250:HEAD http://svn.red-bean.com/repos/branches/my-branch

2.如果你的分支在修订版本23,你希望将主干的修改合并到分支,你可以在你的工作拷贝的分支上这样做:
$ svn merge -r 23:30 file:///tmp/repos/trunk/vendors

3.合并一个单独文件的修改:
$ svn merge -r 30:31 thhgttg.txt


分类: SVN 标签:
  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.