【问题标题】:Include SVN revision number in source code在源代码中包含 SVN 修订号
【发布时间】:2012-02-13 15:19:29
【问题描述】:

我的要求很简单。在每个文件的开头应该有这样的块注释:

/*
 * This file was last modified by {username} at {date} and has revision number {revisionnumber}
 */

我想用来自SVN 的适当内容填充{username}{date}{revisionnumber}

如何使用NetBeansSubversion 实现这一目标?我已经搜索了很多,但我找不到我需要的确切内容。

【问题讨论】:

标签: java svn version-control netbeans


【解决方案1】:

我查看了this 问题并获得了一些有用的信息。它并不完全重复,因为我正在使用NetBeans,但想法是一样的。这是我的标题:

/*
 * $LastChangedDate$
 * $LastChangedRevision$
 */

然后我去 Team > Subversion > Svn properties 并添加svn:keywords 作为属性名称和LastChangedDate LastChangedRevision 作为属性值。

当我从NetBeans 提交时,它看起来像这样:

/*
 * $LastChangedDate: 2012-02-13 17:38:57 +0200 (Пн, 13 II 2012) $
 * $LastChangedRevision: 27 $
 */

感谢大家的支持!我会接受我的答案,因为其他答案不包含NetBeans 信息。尽管如此,我还是给其他答案+1

【讨论】:

  • 这也可以在 Eclipse 中完成:右键单击项目树。选择Team -> Set Property,从Property name列表中选择svn:keywords并在Enter a property文本框中输入:LastChangedDate LastChangedRevision跨度>
  • 尝试添加 svn:keywords 时,NB 8 中没有任何反应。
【解决方案2】:

由于此数据仅在文件提交后存在,它应该由 SVN 自己设置,而不是客户端程序。 (并且客户端处理往往会被禁用或根本未配置。)这意味着没有您想要的简单模板/替代,因为在第一次替换后模板变量将丢失。

您可以找到有关 SVN 关键字替换 here 的信息。那么$Rev$之类的东西就可以换成$Rev: 12 $了。

【讨论】:

    【解决方案3】:

    您可以使用The SubWCRev Program 来做到这一点。

    SubWCRev 是 Windows 控制台程序,可用于读取 Subversion 工作副本的状态和可选的执行关键字 在模板文件中替换。这通常用作 构建过程作为合并工作副本信息的一种方式 进入您正在构建的对象。通常它可能用于 在“关于”框中包含修订号。

    这通常在构建过程中完成。

    如果你使用 Linux,你可以找到一个 Linux 二进制文件here。如果您愿意,您也可以使用svn log 的输出编写自己的代码。

    【讨论】:

      【解决方案4】:

      我遵循 Petar Minchev 的建议,只是我没有将 $LastChangedRevision$ 标签放在注释块中,而是将其嵌入到字符串中。现在可以在帮助 -> 关于对话框中以编程方式显示修订号。

      String build = "$LastChangedRevision$";
      

      我可以稍后在 about 对话框中使用删除所有绒毛的字符串显示修订值。

      String version = build.replace("$LastChangedRevision:", "").replace("$", "").trim();
      

      【讨论】:

      • 我也是这样用的。
      【解决方案5】:

      我推荐一种稍微不同的方法。

      将以下标题放在源文件的顶部。

      /*
       * This file was last modified by {username} at {date} and has revision number {revisionnumber}
       */
      

      然后像这样添加一个shell脚本

      发布更新,结帐脚本

      USERNAME=# // use svnversion to get username
      DATE=# // use svnversion to get revisio nnumber
      sed -e "s#{username}#${USERNAME}#" -e "s#{date}#${DATE}#" ${SOURCE_CONTROL_FILE} > ${SOURCE_FILE}
      

      预提交脚本

      cat standard_header.txt > ${SOURCE_CONTROL_FILE}
      tail --lines $((${LENGTH}-4)) ${SOURCE_FILE} >> ${SOURCE_CONTROL_FILE}
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-01-20
        • 1970-01-01
        • 2023-01-10
        • 1970-01-01
        • 2015-12-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多