2009-11-24 176 views

回答

56

你可以下手:

svn diff http://REPOS/trunk http://REPOS/branches/B 

(其中http://REPOS是你的,包括trunkbranches父母库路径)

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

+12

谢谢!你的回答让我看到这个http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-diff.html,它解释了如何对TortoiseSVN做同样的事情。 – tukushan 2009-11-24 21:18:42

+0

速记 - >'svn diff ^/trunk ^/branches/B' – cchamberlain 2015-10-09 17:39:44

0

这里有一个post from Murray Cumming它描述了非显而易见的过程:

  • 发现版本号:你需要知道每个分支的最新版本的版本号。它看起来像svn日志是唯一的方法来做到这一点。
  • cd进入其中一个分支目录,如中继线。
  • 供应版本号的svn diff命令:svn diff -r123:145
+1

这不就是告诉你自从上次提交到分支后'trunk'发生了什么变化吗?如果我错过了某些东西,我很抱歉 - 这里迟到了...... – SimonJ 2009-11-24 01:10:39

+0

您不需要在每个分支中查找最新版本号:只需使用“HEAD”即可。但这不是OP要求的 - 他想在他的分支和主干之间进行比较,而不是在同一分支的两个修订之间进行比较。 – Ether 2009-11-24 01:33:20

1

感谢信息家伙,我会添加一些东西来提高diff结果的可读性。如果您使用: svn diff svn:// url:9090/branches/PRD_0002 svn:// url:9090/branches/TST_0003> svn_diff_filename.txt

您可以使用: FINDSTR “索引:” C:\路径\ svn_diff_filename.txt> svn_diff_file_list.txt

那会带给您有任何差异文件的读取列表。

4

我通常检查出两个分支(或分支和干线)到目录。 然后,我使用Kompare或类似的图形工具(取决于您的偏好,操作系统,...)。 当我需要执行复杂的合并时,这对我非常有用。

0

到分支的两个版本之间的差异:

svn diff -r rLATEST:rOLD 

使用svn log以获得不同的版本。使用可以使用svn log -l 5限制日志中的修订数量。只会显示最后5个修订版本。

12

如果你只是寻找高水平的哪些文件是不同的,不希望看到所有的内容,使用方法:

svn diff ^/trunk ^/branches/dev --summarize

(与此相比干线和Dev分支)

2

由于缺乏声誉不会让我添加这个作为对现有答案的评论,所以我不得不将它作为单独的一个添加。

对我而言,svn diff的一个有用选项是--ignore-properties。我的两个分支已经结束了相同的代码明智的,但有不同的合并历史。

使用--ignore-properties允许我向自己证明是这种情况,而不需要涉及大量的“svn:mergeinfo”属性更改。