Svn 创建标记时修改文本行

Svn 创建标记时修改文本行,svn,batch-file,tortoisesvn,Svn,Batch File,Tortoisesvn,当我创建一个分支时,我想要一个钩子脚本来更改文本文件的第一行,以记录修订号。我之所以要这样做,是因为这个文本文件与其他脚本交互,然后从存储库中提取其他文件的正确版本 我觉得一定有一种方法可以编写一个预提交钩子脚本,如果你提交到某个路径,它会改变一行文本,预提交 Set "SVNHEAD=SVN HEAD" set REPOS=%1% Set "SVNREV=%REVISION%" (get the revision number somehow from SVN) gsar -s%PARTSD

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

我觉得一定有一种方法可以编写一个预提交钩子脚本,如果你提交到某个路径,它会改变一行文本,预提交

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文件,尽管我真的很高兴听到它。有人知道这是否可能/如何做到吗

非常感谢 克里斯

  • 您无法在hook中获取将来的修订号,因为它还不存在。您不能预测修订号,因为它可以是“HEAD”+N(其中N-任何一个正数):不要忘记同步并行提交的性质
  • 修改hook中的事务内容被认为是非常糟糕的做法,每个人都必须避免
  • 如果您想在文件中有修订号,可以(have?)使用SVN关键字
$Revision$关键字将转换为字符串,其中包含(除其他数据外)此文件上次提交的修订版本,即在您的情况下-创建分支的修订版本,并将包含此数据,除非您在分支内修改文件

  • 如果$Revision$技巧对您不可用,您可以依赖其他数据
    • svn日志-q BRANCH-URL
      返回创建分支的上次数据字符串修订
    • 通过分支后的额外提交,您可以
      svn propset someproperty somevalue BRANCH-URL
      并稍后使用propget | proplist(somevalue=分支的修订版,因为它已经存在)
在您的情况下,我更喜欢使用特殊的(未用于其他任务)文件,它必须在分支之前立即创建,并且仅在分支修订中提交一次(不优雅,但最简单的方式)