NAnt + svn diff - 忽略合并提交

时间:2013-07-09 11:56:09

标签: svn merge diff nant

我们的(非常遗留的)代码库有一个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命令中排除合并的更改?

1 个答案:

答案 0 :(得分:0)

使用1.2分支的创建日期作为diff命令的第一个参数:

svn diff -r {2013-07-09}:HEAD foo

<强>参考