1

我正在尝试设置一个简单的预提交钩子脚本,该脚本会在没有消息的情况下拒绝提交。我们使用 VisualSVN Server 2.5.8,并且我添加了一个指向 .bat 文件的预提交挂钩。

该文件已执行,但 REPOS-PATH 和 TXN-Name 的参数为空。在我的脚本中,我尝试将 %0 记录到文件中,我发现这只是返回脚本的路径。所以出于某种原因,VisualSVN Server 没有传递这些参数。有什么问题?

测试代码:

@echo off

setlocal enabledelayedexpansion

set REPOS=%1
set TXN=%2

set SVNLOOK="%VISUALSVN_SERVER%\bin\svnlook.exe"


echo "repos %REPOS%." >> C:\Repositories\Hooks\test.log
echo "txn %TXN%." >> C:\Repositories\Hooks\test.log

exit 0

提交后, test.log 包含:

“回购。”

“TXN。”

4

2 回答 2

0

挂钩脚本在空环境中执行 - 没有设置变量,not %PATH%, not %VISUALSVN_SERVER%。您需要指定完整路径svnlook.exe而不取决于脚本中未定义的环境变量。

对于丢失的%REPOS%and %TXN%,我在我的钩子中使用以下内容:

set "REPOS=%~1"
set "TXN=%~2"
于 2013-03-21T13:18:50.860 回答
0

您可以使用VisualSVNServerHooks.exe check-logmessage现代 VisualSVN 服务器版本附带的预提交挂钩,该挂钩位于%VISUALSVN_SERVER%bin目录中。这个简单的工具将帮助您定义日志消息中允许的最小字符数。

有关说明,请参阅文章KB140:验证 VisualSVN 服务器中的提交日志消息。

于 2020-01-23T12:42:16.137 回答