如何在SVN中为特定文件夹使用预提交挂钩(Windows批处理文件)?

时间:2012-03-02 10:51:12

标签: svn hook pre-commit

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

有人可以帮忙吗?

此致 Ruhee Jaiswal

4 个答案:

答案 0 :(得分:1)

如果您使用的是Windows并使用TortoiseSVN,我建议您使用svn属性。

  

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

另外,请务必查看other features类似错误跟踪器集成。

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

答案 1 :(得分:0)

  1. 你不能拥有钩子,它只适用于某些子树的事件
  2. Hooks是存储库范围事件的处理程序
  3. 如果您只想检查受影响的repo的某些部分,必须在hook-code中添加逻辑

答案 2 :(得分:0)

如果您对TortoiseSVN没问题,可以在那里输入client-side hook

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

  

PATH DEPTH MESSAGEFILE CWD

有趣的是PATH

  

PATH
  包含启动操作的所有路径的临时文件的路径。每个路径都位于临时文件中的单独一行。

因此,当你的钩子被调用时(可以使用任何语言),请执行以下步骤:

  1. 检查MESSAGEFILE的内容。如果里面有评论,一切都很好,从脚本返回成功(我不记得成功是用0还是0表示,只是试一试)
  2. 如果MESSAGEFILE为空,请浏览文件PATH并查看其中是否存在受影响的元素。如果是,则返回错误;否则就会成功。

答案 3 :(得分: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