首页 > 解决方案 > 在 SVN 预提交挂钩中提取多行提交日志

问题描述

我试图在 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-filesvnpre-commit-hook

解决方案


您本质上存在延迟扩展问题。这是批处理文件在执行代码行之前如何扩展变量的那些古怪的事情之一。因此,您有两种选择来解决此问题。

启用延迟扩展并使用感叹号来引用您的变量。

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)

推荐阅读