知道SubVersion工作副本是否已更新

时间:2020-03-06 14:59:21  来源:igfitidea点击:

每当WC更新到新修订版时,是否可以修改/修改文件?或者,作为第二好的选择,每当执行svn update时?

这样做的动机是:我想在可执行文件中包含SVN版本号。因此,我必须在构建过程中运行SubWCRev。即使修订号没有更改,SubWCRev的输出文件也会每次重新创建。这意味着即使没有任何更改,该exe也会在每个版本上链接。我希望仅根据需要链接它。

解决方案

  • 将SubWCRev输出输出到一个临时文件中
  • 将此文件与当前修订号文件进行比较
  • 仅当两者不同时,才用临时文件覆盖它
  • 删除临时文件

我们甚至可以使用.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

编辑:顺便说一句,我们可以通过使rev-number-file依赖于.hg / dirstate来在Mercurial中做到这一点。

我的答案可能太短了,但可能会给我们一些指导。

SVN有钩子。它们是每次提交代码时都会执行的脚本。

可能是?

这听起来像是这里讨论的重复:
在Windows应用中在编译时嵌入SVN修订版号

在该问题中描述的我的方法适用于各种平台,并且可以输出为我们编程的任何格式,因此在包括文件在内的可行解决方案的任何情况下都可以使用。

在情况下,我们要注意svnversion输出中的M修饰符:这将使我们知道WC已被修改。