【问题标题】:Extracting multiline commit log in SVN pre commit hook在 SVN 预提交挂钩中提取多行提交日志
【发布时间】:2018-10-19 13:39:01
【问题描述】:
我试图在 pre commithook 中获得完整的提交评论。以下是我的代码,
set REPOS=%1
set TXN=%2
SET comment
FOR /F "tokens=*" %%g IN ('svnlook log %REPOS% -t %TXN%') do (SET comment=%comment%%%g)
但我只能获取日志的最后一行。有什么办法可以获得完整的日志(多行)?
【问题讨论】:
标签:
batch-file
svn
pre-commit-hook
【解决方案1】:
您本质上存在延迟扩展问题。这是批处理文件在执行代码行之前如何扩展变量的那些古怪的事情之一。因此,您有两种选择来解决此问题。
启用延迟扩展并使用感叹号来引用您的变量。
setlocal enabledelayedexpansion
FOR /F "tokens=*" %%g IN ('svnlook log %REPOS% -t %TXN%') do (SET comment=!comment!%%g)
对CALL 命令使用一些小技巧。您将百分比符号加倍并使用 CALL 命令,该命令为您提供两个变量扩展阶段。
FOR /F "tokens=*" %%g IN ('svnlook log %REPOS% -t %TXN%') do (CALL SET comment=%%comment%%%%g)