当前位置:  开发笔记 > 运维 > 正文

post commit hook更新版本下的文件

如何解决《postcommithook更新版本下的文件》经验,为你挑选了2个好方法。

我已经创建了一个名为version.ini的文件,该文件受版本控制(/trunk/version.ini)我现在想要使用最新版本更新该文件的post post钩子.但我不知道什么命令可以做到这一点.我知道我有这个参数:

#!/bin/sh

REPOS = "$1"
REV = "$2" 

但是,如何在不进行新修订的情况下替换该文件的内容?我的回购中还有这些变化吗?

更新:因为我可能还没清楚,我将尝试更详细的探索:让我说我有这个回购:/ svn/repos/project/trunk /并且在其中我有一个名为version.ini的文件,它受版本控制.我想要做的是每次提交更新该文件到新版本.让我们说当前的版本是263我希望该文件中有263个写入.并回答一个答案,你不能使用关键字,因为他们只有工作,如果我更新该文件,我不想这样做.

希望我有道理,感谢你给予的任何帮助.干杯



1> Wim Coenen..:

你真正想要的不是修改你的提交的方法,而是像svn:keywords这样的东西.不幸的是,正如你可以在"$ Global $ Rev $?"框中读到的那样.这并没有真正做你想要的.相反,您必须编写一个脚本来调用和解析svnversion的输出,并以某种方式将结果作为构建的一部分放入您的文件中.

现在,为了回答你的文字问题,思考你在svn钩子脚本中能做什么和不能做什么仍然很有趣:

您无法从提交后挂钩更改提交

在提交后挂钩运行时,提交已经完成(顾名思义),因此更改文件是不可能的.此时您只能检查更改.

您也无法修改预提交挂钩中的挂起提交

您可以使用带有--transaction开关的svnlook工具从预提交挂钩检查挂起事务的内容,但不能更改它.

如果可以在预提交挂钩中进行任意更改,那么服务器显然需要将这些更改报告给svn客户端.否则,客户端会认为他的文件处于提交的修订版本,而实际上它们实际上是不同的.如果svn客户端接受此类报告的更改,则可能会导致您的工作被提交消除.对于版本控制系统而言,这将是一个令人惊讶的特征,温和地说.不用说颠覆不允许这样.



2> Aaron Digull..:

如果不修改版本号,就无法更改仓库中的任何内容.

解决方案是将特殊关键字(搜索svn:keywords)放入文件中,并在结账时让SVN替换它们.看起来这些值来自存储库,但存储库中文件的表示不会改变.

您可能正在寻找$ LastChangedRevision $(或简称$ Rev $).

另一种解决方案是在构建工具/ Makefile/svn info项目根目录中使用的任何内容中添加规则,以确定当前版本并将其放入临时文件(添加到您的仓库中).

推荐阅读
拾味湖
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有