1

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

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

例如:

  1. revision.txt 包含“10”
  2. 我对我的工作副本进行了一些更改(其他文件,而不是 revision.txt)
  3. svn ci
    • 启动钩子脚本
    • 阅读下一个修订号
    • 更新修订版.txt
    • 提交更改(也是 revision.txt)
  4. 现在 revision.txt 已经提交了修订号 11

我尝试使用钩子脚本没有成功。我无法在提交之前检索下一个修订号并更新事务。

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

有可能吗?欢迎举例

4

3 回答 3

2

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

你需要这个做什么?也许还有另一种方法可以实现您想要实现的目标。

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

于 2010-09-03T15:11:26.590 回答
0

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

于 2010-09-03T14:19:45.053 回答
0

关键字替换最接近您想要的,但这也不起作用,因为它为您提供了文件的最后修改,而不是项目的最后修改。从关于这个问题的颠覆常见问题解答:

您想要的信息(工作副本的修订版)可从命令svnversion获得;它为您提供有关给定路径的工作副本的修订级别的信息(有关详细信息,请参阅 svnversion --help )。

您可以将其合并到您的构建或发布过程中,以便将您需要的信息放入源代码本身。

于 2010-09-03T14:23:44.947 回答