如何为每个提交此文件的提交更新未修改文件中的修订号?

时间:2010-09-03 14:08:16

标签: svn hook revision auto-versioning

我的SVN项目中有一个 revision.txt 文件。

基本上我希望当我使用工作副本在提交后具有的修订号调用 svn ci 时自动更新此文件。

例如:

  1. revision.txt包含“10”
  2. 我对我的工作副本(其他文件,而不是rev​​ision.txt)进行了一些更改
  3. svn ci
    • 启动钩子脚本
    • 阅读下一个修订号
    • update revision.txt
    • 提交更改(也是revision.txt)
  4. 现在revision.txt已提交修订号11
  5. 我尝试使用钩子脚本没有成功。在提交之前,我无法检索下一个修订号并更新事务。

    然后尝试使用“auto-props”,但它们仅适用于修改过的文件。 最好的解决方案是仅使用钩子脚本而不使用检查修订和更新的包装脚本。

    有可能吗?欢迎举例

3 个答案:

答案 0 :(得分:2)

由于竞争条件,您无法在提交前猜出下一个修订号 - 在事实之后,您无法保证其他人没有进入您之前。在svn提交钩子中更​​改文件也是非常糟糕的形式 - 工作副本变得过时而且凌乱,因为它们只从服务器获得“它工作”或“它失败”,从来没有“它工作,但是通过文件现在有这些内容的方式......“

你需要什么?也许还有另一种方法来获得你想要实现的目标。

您可以在需要之前使用“svn info”自动生成revision.txt文件,并将“Revision:”行过滤到文件中。

答案 1 :(得分:0)

正如您已经提到的基于svn:keywords,它只能更改修改过的文件。但我认为您需要的是一个处理此类信息的构建系统(可能是构建服务器/连续集成服务器)。

答案 2 :(得分:0)

Keyword substitution最接近你想要的,但这并不能真正起作用,因为它给你最后一次修改文件,而不是项目。来自subversion FAQ on this issue:

  

您想要的信息(修订版   您的工作副本)可用   来自命令 svnversion ;它给   您有关修订级别的信息   给出一条路径的工作副本(见   svnversion - 有关详情的帮助。)

     

您可以将其合并到您的构建中   或者发布过程来获得   您需要的信息来源   本身。