Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 在SVN预提交钩子中提取多行提交日志_Batch File_Svn_Pre Commit Hook - Fatal编程技术网

Batch file 在SVN预提交钩子中提取多行提交日志

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) 但我只能得到日志的最后一行。有什么方法可以获取完整的日志(多行)?您实际上遇到了延迟扩展问题。在执行代码行之前,批处理文件如何扩展变量,这是一件奇怪的事情。所以你有两

我试图在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)

但我只能得到日志的最后一行。有什么方法可以获取完整的日志(多行)?

您实际上遇到了延迟扩展问题。在执行代码行之前,批处理文件如何扩展变量,这是一件奇怪的事情。所以你有两个选择来解决这个问题

启用延迟展开并使用感叹号引用变量

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)

谢谢你的更新。