Windows Pre-commit钩子用于获取带有Tortoise的Subversion上的Log消息

时间:2018-03-26 14:15:10

标签: batch-file svn tortoisesvn

我的机器上安装了SVN和Tortoise SVN。我创建了一个批处理文件“.bat”。我正在尝试获取Log消息以验证在提交之前在UI中提供的消息。

我尝试了this回答失败并出现以下错误。

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

任何人都可以指导我问题是什么(或)无论如何都要实现同样的目标。

1 个答案:

答案 0 :(得分:0)

svnlook log附加\format时,我遇到了问题。

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

path depth messagefile cwd

当提交失败时,使用此答案中的代码打印这些参数。

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

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

@echo off
findstr . "%~3" >nul
if errorlevel 1 echo args: %* >&2 & exit 1
exit 0

如果消息文件为空,则会导致提交失败,否则允许提交成功。

的问题:

  • 消息文件中只有一个空格会导致提交失败。
  • 消息文件中只有一个双重空格允许提交。

似乎可以改进findstr模式。这可能是个人偏好,因此请linked answer pattern保持问题。

想法aschipfl在评论中分享:

@echo off
if %~z3 gtr 0 (exit 0) else exit 1

消息文件中的任何字符都会使文件的大小不为零。

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

注意:使用SVN-client 进行测试可能是svnlook log的原因 给了我奇怪的结果。感谢aschipfl提供的信息。