了解SubVersion工作副本是否已更新

时间:2008-10-01 17:48:57

标签: svn build-process

当WC更新到新版本时,有没有办法让文件被修改/触摸?或者,作为第二个最佳选项,只要执行svn update

这是动机:我想在我的可执行文件中包含SVN修订号。所以我必须运行SubWCRev作为构建的一部分。即使修订号未更改,每次都会重新创建SubWCRev的输出文件。这意味着即使没有任何更改,exe也会在每个构建上链接。我希望它只在需要时链接。

3 个答案:

答案 0 :(得分:3)

  1. 将SubWCRev输出转换为临时文件
  2. 将此文件与当前版本号文件
  3. 进行比较
  4. 仅当两者不同时才用临时文件覆盖
  5. 删除临时文件
  6. 您甚至可以使用.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中执行此操作。

答案 1 :(得分:1)

这听起来像是这里讨论的重复: Embedding SVN Revision number at compile time in a Windows app

我的方法在该问题中描述,可以跨平台工作,并且可以输出为您编程的任何格式,因此它可以在包含文件是可行解决方案的任何情况下工作。

在你的情况下,你想在svnversion的输出中观察M修饰符:这会让你知道你的WC已被修改。

答案 2 :(得分:-1)

我的回答可能太短,但可能会给你一些指导。

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

也许?