如何将SVN分支工作副本与主干特定版本对比(排除mergeinfo)
如何对比SVN工作副本与主干特定版本的内容差异(排除mergeinfo干扰)
我完全理解你的场景——从主干稳定版拉分支开发,定期合并主干更新,现在想随时查看当前工作副本和最后合并的主干版本(比如r110)的所有内容差异,包括你的修改、合并冲突后的变更,同时还要去掉那些无关的svn:mergeinfo属性变更输出,而且不想先提交修改。
针对你的需求,直接用SVN的diff命令就能解决,不需要绕到提交分支版本再对比。这里有两个精准的命令选项:
选项1:仅排除svn:mergeinfo属性,保留其他属性变更(如果需要)
如果你还想看到其他属性(比如svn:eol-style)的变更,只是不想看到svn:mergeinfo,用这个命令:
svn diff --property-exclude svn:mergeinfo . ^/trunk@110
.代表当前工作副本目录^/trunk@110是主干r110版本的简写(如果你的SVN版本不支持相对路径,换成完整URLsvn+ssh://svn/trunk@110即可)--property-exclude svn:mergeinfo会过滤掉所有关于svn:mergeinfo的属性变更输出,只保留文件内容和其他属性的差异
选项2:完全忽略所有属性变更,只看文件内容差异
如果你只关心文件内容的变化,完全不想看到任何属性相关的输出,用这个命令:
svn diff --ignore-properties . ^/trunk@110
这个命令会直接屏蔽所有属性变更,只展示工作副本文件和主干r110文件的内容差异,包括你做的修改、合并冲突后保留的变更。
为什么这比之前的建议更适合你?
之前提到的svn diff ^/trunk@REV1 ^/my_branch@REV2有两个明显的问题:
- 它对比的是分支的某个已提交版本和主干版本,而你需要的是未提交的工作副本和主干版本的对比
- 它会默认包含
svn:mergeinfo的属性输出,而我们的命令直接过滤掉了这些无关信息
用上面的命令,你不需要提交任何修改,就能随时查看当前工作副本和目标主干版本的所有内容差异,完全符合你的需求。
内容的提问来源于stack exchange,提问作者Mark Galeck
相关产品推荐
相关产品推荐

