1

我们的(非常旧的)代码库有一个 ActiveX 客户端 UI,它需要构建二进制文件并将其提交到 SVN。

我们使用主干、功能分支和标记发布存储库模式。

我编写了一个 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)对已正确打包在 1.1.1 版本中的客户端 UI 进行了更改。

此更改已向前合并到第二个分支(例如 1.2),当我现在尝试打包 1.2.1 时,它包括从 1.1 合并的客户端 UI 更改

有没有办法排除svn diff命令上的合并更改?

4

1 回答 1

0

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

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

参考

于 2014-05-09T23:53:42.140 回答