Windows预注册挂钩评论长度Subversion

我似乎没有得到这个地方。 无论是在网上search脚本等。任何人都有一个脚本,你可以编辑在Windows环境中的开箱即用pre-commit.tmpl,需要input的字符在Tortoise Subversion的提交评论全球所有团队成员都是必需的,而这个要求是从SVN服务器推到客户端?

我不知道脚本语言,这应该是非常简单的事情,如果不花时间在接下来的3个小时里找出脚本,

Solutions Collecting From Web of "Windows预注册挂钩评论长度Subversion"

这是一个.bat文件,要求有一个评论。 它检查注释中是否存在至少一个字符。

@echo off :: Stops commits that have empty log messages. @echo off setlocal rem Subversion sends through the path to the repository and transaction id set REPOS=%1 set TXN=%2 svnlook log %REPOS% -t %TXN% | findstr . > nul if %errorlevel% gtr 0 (goto err) else exit 0 :err echo. 1>&2 echo Your commit has been blocked because you didn't enter a comment. 1>&2 echo Write a log message describing the changes made and try again. 1>&2 echo Thanks 1>&2 exit 1 

该文件位于存储库的/ hooks文件夹中,名为pre-commit.bat。 如果您需要最少量的字符,则要修改的行是

 svnlook log %REPOS% -t %TXN% | findstr . > nul 

所以如果你想要至少10个字符,你需要有10个字符而不是一个字符

 svnlook log %REPOS% -t %TXN% | findstr .......... > nul 

findtr命令更高级的选项可以让你做更有趣的检查(特定的字符集等)

我使用SubversionNotify ,它可能比你需要的更多,但是设置起来很简单。

尝试这个 :

 rem Make sure that the log message contains some text. set REPOS=%1 set TXN=%2 "C:\Program Files\Subversion\bin\SVNlook.exe" log -t %TXN% %REPOS% | FindStr [a-zA-Z0-9] IF %ERRORLEVEL% EQU 0 GOTO OK echo Your commit has been blocked because you didn't provide a log message 1>&2 echo Please write a log message describing the purpose of your changes and 1>&2 echo then try committing again. -- Thank you 1>&2 exit 1 :OK rem ------------------------------------------------------------- rem Check if comment is in list of reserved words to not be used.. rem ------------------------------------------------------------- "C:\Program Files\Subversion\bin\SVNlook.exe" log -t %TXN% %REPOS% >comment setlocal enabledelayedexpansion Set SEPARATOR= set COMMENT= for /f "delims=" %%a in (comment) do ( set currentline=%%a set COMMENT=!COMMENT!%SEPARATOR%!currentline! ) FIND "%COMMENT%" "C:\Program Files\Subversion\excludedwords.txt">Null If %ERRORLEVEL% EQU 1 goto OK2 :Fail echo Your commit has been blocked because the single word comment you provided is not allowed 1>&2 echo Line is -%COMMENT%- 1>&2 echo Please write a proper log message describing the purpose of your changes and 1>&2 echo then try committing again. -- Thank you 1>&2 exit 1 :OK2 rem ------------------------------------------------------------- rem Check number of words on the line if = 2 then reject comment rem ------------------------------------------------------------- Set VAR1=%COMMENT% Set count=0 For %%j in (%VAR1%) Do Set /A count+=1 IF %count% EQU 2 goto Fail2 goto OK3 :Fail2 echo Your commit has been blocked because not enough detail supplied 1>&2 echo Please write a longer log message describing the purpose of your changes and 1>&2 echo then try committing again. -- Thank you 1>&2 exit 1 :OK3 rem ------------------------------------------------------------- rem Check that the author of this commit has the rights to perform rem ------------------------------------------------------------- rem the commit on the files and directories being modified. rem commit-access-control.pl "$REPOS" "$TXN" commit-access-control.cfg || exit 1 rem All checks passed, so allow the commit. exit 0 

我有一个预先提交的钩子 ,可以做你想要的。 再加上更多。

  • 您可以指定提交评论的最小长度。
  • 您可以将提交注释与正则表达式匹配。 您不仅可以指定长度,还可以指定某些参数。 例如,提交注释是否包含您的缺陷跟踪系统使用的错误号,以便您可以追溯到特定缺陷的更改?

它也可以让你做到以下几点:

  • 针对特定文件或目录设置各种提交权限:
    • 读写 :用户可以签出并提交这些项目。
    • 只读 :用户可以检出这个项目,但不能提交更改。
    • 添加 :用户可以通过svn cp添加一个目录,但不提交任何更改。 这对于允许您创建标记的/tags目录是完美的,但不能修改标记。
    • 不删除 :用户可以提交更改并添加新文件,但不能删除这些文件。
    • no-add :用户只能提交更改,不能在提交中添加或删除文件。

而且,它也允许你这样做:

  • 通过globbing的正则表达式来禁止某些文件名,
  • 要求某些文件或目录有一个特定的属性设置为一个特定的值。 对于确保Unix shell脚本,Unix Makefiles和Windows Batch文件有正确的行结束,或者svn:ignore被设置,所以用户不会意外地提交他们不应该提交的文件。
  • 要求某些修订属性设置为一定的值。 这是你如何检查提交消息,但说svn:log必须匹配某些正则表达式。

这个预先提交的脚本是用Perl编写的。 默认情况下,Perl提供了Unix,Mac和Linux服务器。 不幸的是,它不包括在Windows电脑上。 幸运的是,有几个开源的,免费的,易于安装Perl的PC包,如ActivePerl和Strawberry Perl