创建标记时修改一行文本

时间:2012-11-06 16:32:55

标签: svn batch-file tortoisesvn

当我创建分支时,我想要一个钩子脚本,它将更改文本文件的第一行,以记录修订号。我想这样做的原因是因为这个文本文件与其他脚本接口,然后从存储库中提取其他文件的正确版本。

我觉得必须有一种编写预提交钩子脚本的方法,该脚本说明如果你提交到某个路径,它会更改一行文本,然后提交。

Set "SVNHEAD=SVN HEAD"
set REPOS=%1%
Set "SVNREV=%REVISION%" (get the revision number somehow from SVN)

gsar -s%PARTSDIR:I:\=I::\% -r%SVNHEAD% -i -f %SVNREV%

可执行文件gsar替换ascii文件中的文本行,如果这是一个简单的方法来执行.bat文件,虽然我真的很感激听到它。有没有人知道这是否可行/怎么做?

非常感谢 克里斯

1 个答案:

答案 0 :(得分:1)

  • 无法获取未来的修订号,因为它尚不存在。您无法预测版本号,因为它可以是“HEAD”+ N(其中N - 任何正数):不要忘记同时并行提交性质< / LI>
  • 将挂钩中的事务内容修改为非常糟糕的做法,每个人都必须避免
  • 如果您想在文件中包含Revision-Number,您可以(有?)使用SVN关键字。

$ Revision $ keyword将被转换为字符串,其中包含(在其他数据中)此文件的last-commit的修订版,即在您的情况下 - 创建分支的修订版并将包含此数据,除非您修改分支内的文件

  • 如果$ Revision $ trick不适用于您,您可以依赖其他数据
    • svn log -q BRANCH-URL返回创建分支的最后一个数据字符串修订
    • 在分支后进行额外提交,您可以svn propset somepropertry somevalue BRANCH-URL稍后使用propget | proplist读取它(somevalue =分支修订版,因为它已经存在)

在你的情况下我更喜欢使用特殊的(未用于其他任务)文件,这些文件必须在分支之前立即创建,并且仅在分支修订中提交一次(不优雅,但是最简单的方法)