Voici un échantillon en deux parties Batch + PowerShell hook pre-commit qui refuse de commiter un message de journal de moins de 25 caractères.
Mettez les deux pre-commit.bat
y pre-commit.ps1
dans votre dépôt hooks
dossier, par exemple C:\Repositories\repository\hooks\
pre-commit.ps1
# Store hook arguments into variables with mnemonic names
$repos = $args[0]
$txn = $args[1]
# Build path to svnlook.exe
$svnlook = "$env:VISUALSVN_SERVER\bin\svnlook.exe"
# Get the commit log message
$log = (&"$svnlook" log -t $txn $repos)
# Check the log message contains non-empty string
$datalines = ($log | where {$_.trim() -ne ""})
if ($datalines.length -lt 25)
{
# Log message is empty. Show the error.
[Console]::Error.WriteLine("Commit with empty log message is prohibited.")
exit 3
}
exit 0
pre-commit.bat
@echo off
set PWSH=%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe
%PWSH% -command $input ^| %1\hooks\pre-commit.ps1 %1 %2
if errorlevel 1 exit %errorlevel%
Note 1 : pre-commit.bat
est le seul qui peut être appelé par VisualSVN et ensuite pre-commit.ps1
est celui qui est appelé par pre-commit.bat
.
Note 2 : pre-commit.bat
peut également être nommé pre-commit.cmd
.
Note 3 : Si vous rencontrez des problèmes d'encodage avec certains caractères accentués et que l'option [Console]::Error.WriteLine
puis ajoutez par exemple chcp 1252
sur pre-commit.bat
la ligne suivante @echo off
.