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 是您的存储库路径,包括trunkbranches 的父级。)

这将打印大量文本,包括所有文本更改,但不包括二进制更改,除了说明它们发生的地点和时间。

【讨论】:

谢谢!你的回答让我看到了这个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 分支比较的主要内容,如果未能解决你的问题,请参考以下文章

SVN 分支管理

SVN操作比较

在 TortoiseSVN 中比较两个分支之间的文件

[No000098]SVN学习笔记5-分支,合并,属性,补丁,锁,分支图

svn多分支开发合并技巧(idea or tortoiseSVN)

SVN拉分支,合并分支