SVN 分支比较
Posted
技术标签:
【中文标题】SVN 分支比较【英文标题】:SVN branch compare 【发布时间】:2010-12-19 17:12:56 【问题描述】:如何比较一个分支与另一个分支?我想将一个分支与主干中的最新版本进行比较。
【问题讨论】:
【参考方案1】:这是一个post from Murray Cumming,它描述了非显而易见的过程:
发现修订号:您需要知道每个分支中最新版本的修订号。看起来 svn log 是唯一的方法。 cd 到分支目录之一,例如主干。 向 svn diff 命令提供修订号:svn diff -r123:145
【讨论】:
这不是告诉你自上次提交到分支后trunk
发生了什么变化?抱歉,如果我遗漏了什么 - 这里已经很晚了......
您不需要在每个分支中查找最新的修订号:只需使用HEAD
。但这不是 OP 所要求的——他想在他的分支和主干之间进行比较,而不是在同一分支中的两个修订之间进行比较。【参考方案2】:
你可以从:
svn diff http://REPOS/trunk http://REPOS/branches/B
(其中http://REPOS
是您的存储库路径,包括trunk
和branches
的父级。)
这将打印大量文本,包括所有文本更改,但不包括二进制更改,除了说明它们发生的地点和时间。
【讨论】:
谢谢!你的回答让我看到了这个tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-diff.html,它解释了如何用 TortoiseSVN 做同样的事情 速记->svn diff ^/trunk ^/branches/B
有没有办法隐藏内部差异部分?这意味着只显示修订、作者、日期、文件列表。【参考方案3】:
感谢提供信息的人,我会添加一些内容来提高差异结果的可读性。如果您使用: svn diff svn://url:9090/branches/PRD_0002 svn://url:9090/branches/TST_0003 >svn_diff_filename.txt
您可以使用: findstr "索引:" C:\path\svn_diff_filename.txt >svn_diff_file_list.txt
这将为您带来一个可读的文件列表,其中包含任何差异。
【讨论】:
【参考方案4】:我通常将两个分支(或分支和主干)检出到目录中。 然后我使用 Kompare 之类的图形工具或类似工具(取决于您的偏好、操作系统……)。 当我需要执行复杂的合并时,这对我很有帮助。
【讨论】:
【参考方案5】:区分一个分支的两个版本:
svn diff -r rLATEST:rOLD
使用svn log
获取不同的修订版本。使用svn log -l 5
可以限制日志中的修订数量。只会显示最后 5 个修订版。
【讨论】:
【参考方案6】:如果您只是在寻找高级别的文件不同并且不想查看所有内容,请使用:
svn diff ^/trunk ^/branches/dev --summarize
(比较主干和开发分支)
【讨论】:
在 Linux 中我必须使用转义符:svn diff \^/[SUBPROJECT]/develop \^/[SUBPROJECT]/feature/myfeature/
【参考方案7】:
由于缺乏声誉不会让我将此添加为对现有答案的评论,我不得不将其添加为单独的。
svn diff
对我来说有用的选项是--ignore-properties
。我的两个分支最终的代码相同,但合并历史不同。
使用--ignore-properties
让我可以向自己证明情况确实如此,而无需费力地处理大量的“svn:mergeinfo”属性更改。
【讨论】:
以上是关于SVN 分支比较的主要内容,如果未能解决你的问题,请参考以下文章
[No000098]SVN学习笔记5-分支,合并,属性,补丁,锁,分支图