如何显示预提交错误消息

时间:2015-08-26 00:12:47

标签: eclipse batch-file svn pre-commit

我想强制提交评论 所以我做了一个pre-commit.bat并设置在hook文件夹下 它运行良好中止没有评论提交消息。 但我有一个问题,我无法从svn服务器看到任何错误消息。

我的环境是 Windows 7的 并使用eclipse,subversion

和服务器操作系统是Windows Server 2008

和pre-commit.bat源是

@echo off
:: Stops commits that have empty log messages.
@echo off

setlocal

REM Subversion sends through the path to the repository and transaction id
SET "REPOS=%~1"
SET "TXN=%~2"
SET "SVNLOOK=C:\Progra~\Subversion\bin\svnlook.exe"

for /f "tokens=1 delims=/" %%i in ('%SVNLOOK% log -t "%TXN%" "%REPOS%"') do set "COMMENT=%%i"
if "%COMMENT%" == "" (goto comment_err)

for /f "tokens=2 delims=/" %%j in ('%SVNLOOK% log -t "%TXN%" "%REPOS%"') do set "ID=%%j"
if "%ID%" == "" (goto id_err)

for /f "tokens=3 delims=/" %%k in ('%SVNLOOK% log -t "%TXN%" "%REPOS%"') do set "MYDATE=%%k"
if "%MYDATE%" == "" (goto date_err)


exit 0


:comment_err
echo. 1>&2
echo Committing has been blocked! 1>&2
echo Because comment is empty! 1>&2
echo Please write a comment and try committing again. 1>&2
echo Message format is [comment]/[author]/[YYYY-MM-DD] 1>&2
echo Thank you 1>&2
exit 1

:id_err
echo. 1>&2
echo Committing has been blocked! 1>&2
echo Because author is empty! 1>&2
echo Please write a author and try committing again. 1>&2
echo Message format is [comment]/[author]/[YYYY-MM-DD] 1>&2
echo Thank you 1>&2
exit 1

:date_err
echo. 1>&2
echo Committing has been blocked! 1>&2
echo Because date is empty! 1>&2
echo Please write a date and try committing again. 1>&2
echo Message format is [comment]/[author]/[YYYY-MM-DD] 1>&2
echo Thank you 1>&2
exit 1

PS。我已经检查过了。 echo" text" 1 GT;和2 这是非常奇怪的事情。当我在本地测试时,错误消息很不好。但我在我的svn服务器上设置。我在日食中看不到任何错误信息。

1 个答案:

答案 0 :(得分:0)

这里有两个可能的罪魁祸首:你的脚本或Eclipse。我们需要在解决问题之前缩小范围。

尝试从命令行svn客户端提交,看看是否可以看到错误消息。如果可以,那么你的脚本应该没问题,问题出在Eclipse上。

如果您在命令行上看到它,那么您的脚本就会出现问题。我建议用一个简单的占位符替换脚本:

echo Fail 1>&2
exit 1

如果您可以从命令行客户端看到此输出,那么您的脚本中可能存在逻辑问题。你正试图批量进行字符串解析,这是非常困难的。我建议使用更高级别的语言编写脚本/程序来完成该部分,并让批处理脚本只检查返回值是否成功。

如果仍然无法使用占位符脚本看到错误消息,那么在服务器上运行的脚本与客户端之间存在某种问题管道通信。如果是这种情况,那么我建议将服务器的错误记录到最大值,重新运行测试,并检查Subversion日志以获取问题的提示。

您尝试强制执行的日志格式的一般注释:您不需要将提交者或日期放在提交消息中。 Subversion已经为你记录了这一点。如果日志中的作者/日期与存储库记录的内容不匹配,则很难知道要信任哪个。