Batch file 在SVN预提交钩子中提取多行提交日志
我试图在pre-commithook中获得完整的commit评论。下面是我的代码Batch file 在SVN预提交钩子中提取多行提交日志,batch-file,svn,pre-commit-hook,Batch File,Svn,Pre Commit Hook,我试图在pre-commithook中获得完整的commit评论。下面是我的代码 set REPOS=%1 set TXN=%2 SET comment FOR /F "tokens=*" %%g IN ('svnlook log %REPOS% -t %TXN%') do (SET comment=%comment%%%g) 但我只能得到日志的最后一行。有什么方法可以获取完整的日志(多行)?您实际上遇到了延迟扩展问题。在执行代码行之前,批处理文件如何扩展变量,这是一件奇怪的事情。所以你有两
set REPOS=%1
set TXN=%2
SET comment
FOR /F "tokens=*" %%g IN ('svnlook log %REPOS% -t %TXN%') do (SET comment=%comment%%%g)
但我只能得到日志的最后一行。有什么方法可以获取完整的日志(多行)?您实际上遇到了延迟扩展问题。在执行代码行之前,批处理文件如何扩展变量,这是一件奇怪的事情。所以你有两个选择来解决这个问题 启用延迟展开并使用感叹号引用变量
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)
谢谢你的更新。