我们的(非常遗留的)代码库有一个ActiveX客户端UI,需要构建并将二进制文件提交给SVN。
我们使用trunk,feature分支和标记版本存储库模式。
我编写了一个NAnt脚本来编译发布包,方法是确定分支和标记创建的提交修订版,并使用svn diff
列出两者之间的UI二进制文件的更改 - 然后将这些更改从存储库导出到生成发布包:
<exec program="svn.exe"
commandline="diff svn://hostname/Project/branches/1.2/Client -r 1234:5678 --summarize --xml"
output="c:\Temp\ClientComponents.xml" />
<xmllist file="c:\Temp\ClientComponents.xml"
property="ClientComponents"
delim=","
xpath="/diff/paths/path[@kind = 'file' and @item != 'deleted']" />
<foreach item="String" in="${ClientComponents}" delim="," property="source">
<!-- svn export -->
</foreach>
svn diff
的输出如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<diff>
<paths>
<path
item="modified"
props="none"
kind="file">svn://hostname/project/branches/1.2/Client/Component1.cab</path>
</paths>
</diff>
到目前为止,这已经很好了 - 因为我们现在有2个并发的功能分支。
第一个功能分支(例如1.1)已对客户端UI进行了更改,该UI已正确打包在1.1.1版本中。
此更改已合并到第二个分支(例如1.2),当我现在尝试打包1.2.1时,它包含从1.1合并的客户端UI更改
有没有办法在svn diff
命令中排除合并的更改?
答案 0 :(得分:0)
使用1.2分支的创建日期作为diff命令的第一个参数:
svn diff -r {2013-07-09}:HEAD foo
<强>参考强>