在Subversion中,我使用svn copy
从主干创建了一个分支。根据{{3}},“这是在您的存储库中”标记“修订版的最简单方法 - 只需将该修订版(通常为HEAD)复制到您的标记目录中。”
svn copy file:////svn/projectX/trunk file:///svn/projectX/branches/stefanl
然后,我对stefanl
分支进行了修改。我想将我的更改提交到主干,但在我这样做之前,我希望看到变化的差异。
如何将'stefanl'分支与'trunk'分支区分开来?我试过svn diff
,但它没有提供太多信息:
% svn diff file:////svn/projectX/trunk file:///svn/projectX/branches/stefanl
Property changes on: .
___________________________________________________________________
Modified: svn:mergeinfo
Reverse-merged /trunk:r1699-1870
答案 0 :(得分:57)
添加到之前的答案(如果在Windows上使用Tortoise SVN):
答案 1 :(得分:8)
您可以使用Unix diff来比较目录。
查找丢失的文件:
diff -r svn/projectX/trunk svn/projectX/branches/stefanl | grep -i only
要查找文件之间的差异:
diff -ru svn/projectX/trunk svn/projectX/branches/stefanl
我有同样的问题,并在邮件主题中找到了建议: http://svn.haxx.se/users/archive-2003-08/0538.shtml
答案 2 :(得分:3)
基于其他答案和一些研究,我写了一个自动执行的脚本。
#!/bin/bash
url=$(svn info | grep ^URL: | sed -e 's,^URL: ,,' )
root=$(svn info | grep '^Repository Root:' | sed -e 's,.*Root: ,,' )
trunk=$root/trunk
if [[ -n "$1" && ! -e "$1" ]]
then
echo "What? svn diff \"$1\"? really?"
exit
fi
svn diff $url/$1 $trunk/$1 > trunk.diff
你在分支下运行它。您可以传递路径(目录或文件),它将按预期工作。如果没有那么它只会区分分支和主干。
答案 3 :(得分:1)
感谢信息人员,我会添加一些东西来提高diff结果的可读性。如果您使用: 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
这将为您提供可读的文件列表,这些文件有任何差异。
此致 KRA。
答案 4 :(得分:1)
如果您正在使用带有eclipse的Subversive插件(其他ide?)切换到存储库浏览透视图。 在SVN Repositories面板中,右键单击任何项目,然后选择“Compare ...”选项。 它应该是直观的。
答案 5 :(得分:1)
使用:
svn diff ^/trunkUrl/fileName ^/branchUrl/fileName
这将为您提供分支和主干文件之间的区别。