Windows コメント長の事前コミットフック Subversion
-
22-08-2019 - |
質問
これではどうにもならないようです。Web でスクリプトを検索するなど。Windows 環境ですぐに使用できる pre-commit.tmpl を編集するだけで誰でもスクリプトを入手できます。このスクリプトでは、Tortoise Subversion のコミットのコメントに x 文字を入力する必要があり、チームのすべてのメンバーが必要になります。この要件は 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
このファイルには、事前にcommit.batという名前のリポジトリの/フックフォルダに座っています。あなたは文字の最小量が必要な場合は、修正するためのラインである
svnlook log %REPOS% -t %TXN% | findstr . > nul
あなたは10文字以上を望んでいた場合は、は、だから、あなたは10を持っている必要があります。のではなく、ただ1
svnlook log %REPOS% -t %TXN% | findstr .......... > nul
findstrののコマンドの詳細は、高度なオプションを使用すると、手の込んだやらせますチェック(特定の文字セット、電気ショック療法)
他のヒント
私は 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
このディレクトリではタグを作成できますが、タグを変更することはできません。 - 削除なし:ユーザーは変更をコミットしたり、新しいファイルを追加したりできますが、これらのファイルを削除することはできません。
- 追加なし:ユーザーは変更をコミットすることのみができ、コミット内でファイルを追加または削除することはできません。
また、次のようなことも可能になります。
- 正規表現を使用して特定のファイル名を禁止する グロブする,
- 特定のファイルまたはディレクトリには、特定の値に設定された特定のプロパティが必要です。Unix シェル スクリプト、Unix Makefile、Windows バッチ ファイルの行末が正しいかどうかを確認する場合などに非常に役立ちます。
svn:ignore
が設定されているため、ユーザーがコミットすべきではないファイルを誤ってコミットすることはありません。 - 特定のリビジョン プロパティには特定の値を設定する必要があります。これがコミットメッセージを確認する方法ですが、
svn:log
特定の正規表現と一致する必要があります。
このプリコミット スクリプトは Perl で書かれています。デフォルトでは、Perl には Unix、Mac、および Linux サーバーが付属しています。残念ながら、Windows コンピューターには含まれていません。幸いなことに、次のような、PC 用の無料で簡単にインストールできるオープンソースの Perl パッケージがいくつかあります。 アクティブパール そして ストロベリーパール
Windowsでは、あなたはVisualSVN Serverに付属してVisualSVNServerHooks.exe check-logmessage
ディレクトリに配置され%VISUALSVN_SERVER%bin
事前コミットフックを使用することができます。このシンプルなツールを使用すると、ログメッセージ内の文字の最小許容数を定義するのに役立ちます。
の記事を参照してください。 KB140:手順については、VisualSVN Serverのの中でコミットログメッセージを検証ます。