たくさんのコミットをよく目にしますが、チケットを参照するメモはありません...そして、戻って手動で差分を確認することになります。悪くはありませんが、メモがあると便利です。何か案は?
8 に答える
TortoiseSVN ではなく、Subversion 自体 - サーバー上の設定です。コミット コメントを強制する pre-commit フックを設定できます。さらに一歩進んで、Jira などの問題追跡システムへの参照の存在を確認する pre-commit フックもあります。
サーバー設定である pre-commit フックを使用する必要があります。基本的にバッチ ファイルである VisualSVN 用に作成しました。同様のスクリプトは、非 Windows ベースの SVN サーバーでも使用できます。
@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
rem check for an empty log message
call "C:\program files\visualsvn server\bin\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 give any 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
コミット コメントを簡単に強制することはできますが、最終的には、「デバッグ」または「テスト」と書かれた 100 万件のコミットが発生します。
開発者がコミット メッセージを追加することの価値を認識していない場合、何かを入力するように強制しても、それは変わりません。
さらに悪いことに、Eclipse ユーザーが最後のコミット メッセージを記憶するように SVN/CVS を統合すると、最後のタスク/プロジェクトからのメッセージとはまったく関係のないファイルをコミットしてしまいます。
事前コミット フックスクリプト (Windows バッチ):
@echo off & setlocal ENABLEEXTENSIONS
set SVNLOOK="E:\Subversion\Program\Subversion 1.5.0\bin\svnlook.exe"
set REPOS=%1%
set TXN=%2%
set LOGFILE=%REPOS%\hooks\log-%TXN%.txt
set GREP=E:\UnxUtils\usr\local\wbin\grep.exe
%SVNLOOK% log -t "%TXN%" "%REPOS%" >%LOGFILE%
set "first="
for /f "delims=" %%a in ('more ^< "%LOGFILE%"') do (
if not defined first set first=%%a
)
del %LOGFILE%
if not defined first ( echo "Please supply a commit comment" >&2 & exit 1 )
REM Check for invalid windows characters in the path
echo Checking >%LOGFILE%
%SVNLOOK% changed -t "%TXN%" "%REPOS%" | find "\" >>%LOGFILE%
%SVNLOOK% changed -t "%TXN%" "%REPOS%" | find ":" >>%LOGFILE%
%SVNLOOK% changed -t "%TXN%" "%REPOS%" | find "*" >>%LOGFILE%
%SVNLOOK% changed -t "%TXN%" "%REPOS%" | find "?" >>%LOGFILE%
%SVNLOOK% changed -t "%TXN%" "%REPOS%" | find """" >>%LOGFILE%
%SVNLOOK% changed -t "%TXN%" "%REPOS%" | find "^>" >>%LOGFILE%
%SVNLOOK% changed -t "%TXN%" "%REPOS%" | find "^<" >>%LOGFILE%
%SVNLOOK% changed -t "%TXN%" "%REPOS%" | find "^|" >>%LOGFILE%
set "first="
for /f "delims=" %%a in ('more +1 ^< "%LOGFILE%"') do (
if not defined first set first=%%a
)
del %LOGFILE%
if defined first ( echo "Please do not use filename characters which are invalid in windows. - Found %first%" >&2 & exit 1 )
REM Tagblock - prevent changes to tag directories
echo Checking >%LOGFILE%
%SVNLOOK% changed -t "%TXN%" "%REPOS%" | %GREP% "^U.*\/tags\/.*" | %GREP% -v -f "%REPOS%\conf\tag-block-exceptions.txt" >>%LOGFILE%
set "first="
for /f "delims=" %%a in ('more +1 ^< "%LOGFILE%"') do (
if not defined first set first=%%a
)
del %LOGFILE%
if defined first (
echo "%first% -- Error: Modifications to tag directories are blocked. To allow these modifications add the path to %REPOS%\conf\tag-block-exceptions.txt" >&2
exit 1 )
TortoiseSVN はクライアントです。Subversion サーバーにコメントを強制したい場合があります。または、コミットにコメントするように指示することもできます。