Batch file Windows Pre-commit钩子用于获取有关使用乌龟的Subversion的日志消息

Batch file Windows Pre-commit钩子用于获取有关使用乌龟的Subversion的日志消息,batch-file,svn,tortoisesvn,Batch File,Svn,Tortoisesvn,我有SVN和乌龟SVN安装在我的机器。我已经创建了一个批处理文件“.bat”。我正在尝试获取日志消息,以便在提交之前验证UI中提供的日志消息 我尝试了一个答案,但失败了,错误如下 svnlook: E720003: Can't open file 'C:\Users\GOPICH~1\AppData\Local\Temp\svnC891.tmp\format': The system cannot find the path specified. 有谁能告诉我问题是什么(或者)有没有达到同样的

我有SVN和乌龟SVN安装在我的机器。我已经创建了一个批处理文件“.bat”。我正在尝试获取日志消息,以便在提交之前验证UI中提供的日志消息

我尝试了一个答案,但失败了,错误如下

svnlook: E720003: Can't open file 'C:\Users\GOPICH~1\AppData\Local\Temp\svnC891.tmp\format': The system cannot find the path specified.

有谁能告诉我问题是什么(或者)有没有达到同样的目的。

我对
svnlook log
有问题,因为它附加了
\format

从stderr返回到提交失败对话框的参数称为:

path depth messagefile cwd
这些参数是在提交失败时使用此答案中的代码打印出来的

第一个和第三个是位于temp目录中的.tmp文件。(第一个是要提交的文件列表)

第三个参数是消息文件,因此您可以使用它来检查是否使用了消息

@echo off
findstr . "%~3" >nul
if errorlevel 1 echo args: %* >&2 & exit 1
exit 0
如果消息文件为空,则会导致提交失败,否则将允许提交成功

问题:

  • 消息文件中只有一个空格会导致提交失败
  • 消息文件中只有双空格允许提交
似乎
findstr
模式可以改进。这可能是个人的偏好,因此避免提出问题

意见中分享的想法:

@echo off
if %~z3 gtr 0 (exit 0) else exit 1
消息文件中的任何字符都会使文件大小不为零

好吧,stdout被重定向为钩子脚本,因此不可用, 因此,可能不需要
@echo off

注意:使用SVN客户端进行测试,这可能是
svnlook日志

给了我奇怪的结果。感谢aschipfl提供的信息。

您提供了指向
svnlook
的存储库无效路径,并得到一个错误,因为'C:\Users\GOPICH~1\AppData\Local\Temp\svnC891.tmp'不是一个存储库。您正在SVN客户端上工作,但您链接的答案的解决方案在SVN服务器上运行,我相信。但是,您有TortoiseSVN,因此您可以将属性
tsvn:logminsize
设置为根,因此提交对话框中的“确定”按钮将灰显,除非提供的消息长度至少为给定的字符数…@aschipfl我想在提交之前将注释写入文本文件。有办法吗?对不起,我听不懂。您想将什么注释写入哪个文本文件?日志消息已在文件中;当您有一个(客户端)预提交钩子脚本时,它的第三个参数是该文件的路径…
svnlook.exe不能在SVN客户端上使用,只能在SVN服务器上使用。无论如何,您不必使用
findstr
,只需使用
if%~z3 gtr 0(退出/B 0)else(退出/B 1)
。。。