【问题标题】:Knowing whether SubVersion working copy has been updated了解 SubVersion 工作副本是否已更新
【发布时间】:2010-09-14 14:29:33
【问题描述】:

有没有办法在 WC 更新到新版本时修改/触摸文件?或者,作为次优选择,无论何时执行svn update

动机如下:我想在我的可执行文件中包含 SVN 修订号。所以我必须在构建过程中运行 SubWCRev。 SubWCRev 的输出文件每次都会重新创建,即使修订号没有改变。这意味着该 exe 链接到每个构建,即使没有任何改变。我希望它仅在需要时链接。

【问题讨论】:

    标签: svn build-process


    【解决方案1】:
    1. 将 SubWCRev 输出保存到临时文件中
    2. 将此文件与当前修订号文件进行比较
    3. 只有当两者不同时才用临时文件覆盖它
    4. 删除临时文件

    您甚至可以使用 .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 来做到这一点。

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        【解决方案3】:

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

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

        也许?

        【讨论】:

        • 没有。我想知道 WC 何时更新,而不是存储库。
        猜你喜欢
        • 2010-10-29
        • 1970-01-01
        • 1970-01-01
        • 2013-02-17
        • 2013-10-19
        • 2012-01-28
        • 1970-01-01
        • 2013-04-02
        • 2015-11-18
        相关资源
        最近更新 更多