1

我想在 SVN(即 Windows 的 .bat 文件)中创建一个预提交挂钩来检查空日志消息。此外,我只想针对 SVN 中的特定文件夹进行此检查。

有人可以帮忙吗?

问候, Ruhee Jaiswal

4

4 回答 4

1

如果您在 Windows 上并使用 TortoiseSVN,我建议为此使用 svn 属性。

tsvn:logminsize 设置提交的日志消息的最小长度。如果您输入的消息比此处指定的短,则提交被禁用。此功能对于提醒您为每次提交提供适当的描述性消息非常有用。如果未设置此属性,或者该值为零,则允许空日志消息。

还要确保查看其他功能,例如错误跟踪器集成。

如果您真的想在服务器端使用钩子执行此操作,您可以试试这个,在这种情况下您的问题是重复的:)

于 2012-03-02T10:59:03.210 回答
0
  1. 你不能有钩子,它只适用于某些子树的事件
  2. 钩子是存储库范围事件的处理程序
  3. 如果您只想检查受影响的 repo 的某些部分,则必须在钩子代码中添加逻辑
于 2012-03-02T11:08:20.517 回答
0

如果你对TortoiseSVN 没问题,你可以在那里输入一个客户端钩子

TortoiseSVN 将以下参数传递给预提交挂钩:

路径深度消息文件 CWD

有趣的是PATH

PATH
临时文件的路径,其中包含启动操作的所有路径。每个路径在临时文件中的单独一行上。

所以,当你的钩子被调用时(顺便说一句,可以是任何语言),请执行以下步骤:

  1. 检查的内容MESSAGEFILE。如果里面有注释,一切正常,从脚本中返回成功(我不记得成功是用0还是!0表示,试一试)
  2. 如果MESSAGEFILE为空,请浏览文件PATH并查看其中是否有受影响的元素。如果是,则返回错误;否则返回成功。
于 2012-03-02T11:16:53.970 回答
0

除了这个答案之外,Windows Pre-commit hook for comment length Subversion您可以使用它svnlook dir-changed来检查当前提交的特定目录。

所以你可以添加类似的东西

svnlook dir-changed %REPOS% -t %TXN% | findstr your_path > nul
 if %errorlevel% equ 0 exit 0

svnlook log %REPOS% -t %TXN% | findstr . > nul  
 if %errorlevel% gtr 0 (goto err) else exit 0  
于 2012-03-03T12:21:48.157 回答