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

如何为SVN中的特定文件夹使用预提交挂钩(Windows批处理文件)?,svn,hook,pre-commit,Svn,Hook,Pre Commit,我想在SVN(即Windows的bat文件)中创建一个预提交钩子,用于检查空日志消息。此外,我只想针对SVN中的特定文件夹执行此检查 有人能帮忙吗 问候,, Ruhee Jaiswal如果您使用的是Windows和TortoiseSVN,我建议您为此使用svn属性 tsvn:logminsize为提交设置日志消息的最小长度。 如果输入的消息比此处指定的短,则提交将被取消 残废此功能对于提醒您提供 每个提交都有适当的描述性消息。如果此属性不是 设置,或者该值为零,则允许使用空日志消息 还要确保查看

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

有人能帮忙吗

问候,,
Ruhee Jaiswal

如果您使用的是Windows和TortoiseSVN,我建议您为此使用svn属性

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

还要确保查看类似bug跟踪器的集成


如果您真的想在服务器端使用钩子来实现这一点,那么您可以尝试,在这种情况下,您的问题是重复的:)

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

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

还要确保查看类似bug跟踪器的集成

如果您真的想在服务器端使用钩子实现这一点,您可以尝试,在这种情况下,您的问题是重复的:)

  • 不能有钩子,钩子只对某些子树的事件有效
  • 钩子是存储库范围内事件的处理程序
  • 如果只想检查受影响回购的某些部分,则必须在挂钩代码中添加逻辑
  • 不能有钩子,钩子只对某些子树的事件有效
  • 钩子是存储库范围内事件的处理程序
  • 如果只想检查受影响回购的某些部分,则必须在挂钩代码中添加逻辑
  • 如果你不介意的话,你可以在那里输入一个

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

    路径深度消息文件CWD

    其中有趣的是
    路径

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

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

  • 检查
    MESSAGEFILE
    的内容。如果里面有评论,一切正常,从脚本返回successful(我不记得成功是用0还是!0表示的,试试看)
  • 如果
    消息文件
    为空,请浏览文件路径,查看其中是否有受影响的元素。如果是,返回一个错误;否则返回成功
  • 如果你不介意的话,你可以在那里输入一个

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

    路径深度消息文件CWD

    其中有趣的是
    路径

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

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

  • 检查
    MESSAGEFILE
    的内容。如果里面有评论,一切正常,从脚本返回successful(我不记得成功是用0还是!0表示的,试试看)
  • 如果
    消息文件
    为空,请浏览文件路径,查看其中是否有受影响的元素。如果是,返回一个错误;否则返回成功

  • 除此之外,您还可以使用
    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  
    

    除此之外,您还可以使用
    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  
    

    @NikolaSmiljanić的可能重复:不要认为这是重复的,因为OP只想对特定文件夹执行钩子(即检查空注释).@NikolaSmiljanić的可能重复:不要认为这是重复的,因为OP想执行钩子(即检查空注释)仅适用于特定文件夹。。。