私はこれでどこにもならないようです。スクリプトをWebで検索するなど。誰でも、Tortoise Subversionのコミットに関するコメントを入力するためにx文字を入力する必要があるWindows環境で、そのまま使用できるpre-commit.tmplを編集できるスクリプトを入手しました。この要件はSVNサーバーからクライアントにプッシュされるのに対し、チームのすべてのメンバーが必要になるようにグローバルに?
私はスクリプト言語を知りません。これは、次の3時間のスクリプトを理解するための時間を取らない限り、かなり単純なものになるはずです。
これはコメントが必要な.batファイルです。コメント内に少なくとも1つの文字が存在するかどうかをチェックします。
@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
このファイルは、pre-commit.batという名前のリポジトリの/ hooksフォルダーにあります。最小限の文字が必要な場合、変更する行は
svnlook log %REPOS% -t %TXN% | findstr . > nul
したがって、最低10文字が必要な場合は、1つだけではなく10個の。が必要です。
svnlook log %REPOS% -t %TXN% | findstr .......... > nul
詳細 findstrの高度なオプション コマンドを使用すると、より詳細なチェックを行うことができます(特定の文字セットなど)
私は SubversionNotify を使用します。おそらく必要以上のことを行いますが、設定は非常に簡単です。
Windowsでは、VisualSVNサーバーに付属し、VisualSVNServerHooks.exe check-logmessage
ディレクトリにある%VISUALSVN_SERVER%bin
事前コミットフックを使用できます。このシンプルなツールは、ログメッセージで許可される最小文字数を定義するのに役立ちます。
手順については、記事 KB140:VisualSVNサーバーでのコミットログメッセージの検証 を参照してください。
これを試して :
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
私は pre-commitフック を持っています。さらにもっとたくさん。
また、次のことも実行できます。
svn cp
を介してディレクトリを追加できますが、変更をコミットすることはできません。これは、タグの作成は許可されているがタグの変更は許可されていない/tags
ディレクトリに最適です。また、これを行うこともできます。
svn:ignore
が設定されていることを確認するなど、ユーザーが誤ってコミットしてはならないファイルをコミットしないようにするのに非常に役立ちます。svn:log
は特定の正規表現に一致する必要があることを示しています。この事前コミットスクリプトはPerlで記述されています。デフォルトでは、PerlにはUnix、Mac、およびLinuxサーバーが付属しています。残念ながら、これはWindowsコンピュータには含まれていません。幸いなことに、PCには ActivePerl や Strawberry Perl など、いくつかのオープンソースの無料で簡単にインストールできるPerlパッケージがあります。