【发布时间】:2010-09-14 14:29:33
【问题描述】:
有没有办法在 WC 更新到新版本时修改/触摸文件?或者,作为次优选择,无论何时执行svn update?
动机如下:我想在我的可执行文件中包含 SVN 修订号。所以我必须在构建过程中运行 SubWCRev。 SubWCRev 的输出文件每次都会重新创建,即使修订号没有改变。这意味着该 exe 链接到每个构建,即使没有任何改变。我希望它仅在需要时链接。
【问题讨论】:
标签: svn build-process
有没有办法在 WC 更新到新版本时修改/触摸文件?或者,作为次优选择,无论何时执行svn update?
动机如下:我想在我的可执行文件中包含 SVN 修订号。所以我必须在构建过程中运行 SubWCRev。 SubWCRev 的输出文件每次都会重新创建,即使修订号没有改变。这意味着该 exe 链接到每个构建,即使没有任何改变。我希望它仅在需要时链接。
【问题讨论】:
标签: svn build-process
您甚至可以使用 .bat 文件执行此操作(使用 fc)。有点像...
REM ***UNTESTED***
FC temp.rev curr.rev | FIND "FC: no dif" > nul
IF NOT ERRORLEVEL 1 COPY /Y temp.rev curr.rev
DEL temp.rev
编辑:顺便说一句,您可以在 Mercurial 中通过使 rev-number-file 依赖于 .hg/dirstate 来做到这一点。
【讨论】:
这听起来像是这里讨论的重复: Embedding SVN Revision number at compile time in a Windows app
该问题中描述的我的方法可以跨平台工作,并且可以输出为您编程的任何格式,因此它可以在包含文件是可行解决方案的任何情况下工作。
在你的情况下,你想在 svnversion 的输出中观察 M 修饰符:这会让你知道你的 WC 已经被修改了。
【讨论】:
我的回答可能会太短,但可能会给你一些方向。
SVN 有钩子。它们是每次提交代码时都会执行的脚本。
也许?
【讨论】: