有没有办法在 WC 更新到新版本时修改/触摸文件?或者,作为次优选择,无论何时svn update
执行?
这是动机:我想在我的可执行文件中包含 SVN 修订号。所以我必须在构建过程中运行 SubWCRev。SubWCRev 的输出文件每次都会重新创建,即使修订号没有改变。这意味着该 exe 链接到每个构建,即使没有任何改变。我希望它仅在需要时链接。
有没有办法在 WC 更新到新版本时修改/触摸文件?或者,作为次优选择,无论何时svn update
执行?
这是动机:我想在我的可执行文件中包含 SVN 修订号。所以我必须在构建过程中运行 SubWCRev。SubWCRev 的输出文件每次都会重新创建,即使修订号没有改变。这意味着该 exe 链接到每个构建,即使没有任何改变。我希望它仅在需要时链接。
您甚至可以使用 .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 有钩子。它们是每次提交代码时都会执行的脚本。
也许?