在 SVN 预提交挂钩中提取多行提交日志
Extracting multiline commit log in SVN pre commit hook
我试图在 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)
但我只能获取日志的最后一行。有什么办法可以获得完整的日志(多行)?
你基本上有一个延迟扩展问题。这是批处理文件如何在执行代码行之前扩展变量的古怪事情之一。因此,您有两种选择来解决此问题。
启用延迟扩展并使用感叹号引用您的变量。
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)
我试图在 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)
但我只能获取日志的最后一行。有什么办法可以获得完整的日志(多行)?
你基本上有一个延迟扩展问题。这是批处理文件如何在执行代码行之前扩展变量的古怪事情之一。因此,您有两种选择来解决此问题。
启用延迟扩展并使用感叹号引用您的变量。
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)