2009-12-18 8 views
6

Spesso vedo un gran numero di commit, ma non ci sono note che facciano riferimento ai biglietti ... E così finisco per tornare indietro e rivedere la diff manualmente. Non necessariamente male, ma sarebbe bello avere delle note. Qualche idea?Come posso forzare i nostri sviluppatori a inserire note quando si esegue il commit tramite TortoiseSVN?

+1

È possibile che si verifichino ancora problemi anche quando si richiedono note. Molte persone finiscono per inserire "Aggiornato" o simili.Se non lo hai già fatto, vale la pena di spiegare a tutti gli sviluppatori come quei commenti possono aiutare a lungo termine. per esempio. essere in grado di vedere la motivazione per un cambiamento tra un anno. – Shaun

+0

Vedere anche [Creazione di un hook di commento richiesto per SVN Tortoise] (http://stackoverflow.com/questions/1208900/creating-a-required-comment-hook-for-tortoise-svn). –

risposta

2

Certo, ma come si imporranno messaggi di commit non-gibberish, significativi e contestualizzati?

Meglio dare un pugno ai tuoi colleghi irresponsabili quando noti un commit zoppo/vuoto. O l'equivalente verbale del punch. Assicurati che si sentano male, è meritato.

+2

È vero che uno script di pre-commit non impedisce alle persone di digitare "progetto aggiornato" nella casella, ma ho visto che i messaggi di commit vanno dal 90% vuoto al 90% di messaggi ragionevoli qui dopo l'implementazione di uno. Devi fare meno pugni se hai uno script pre-commit. –

+1

Cattleprods su ordine proprio per questo scopo. –

5

È possibile definire uno script di hook pre-commit che rifiuta tutti i commit con un messaggio di log vuoto o troppo corto.

Ecco un post su come farlo.

1

Ho usato uno script di hook pre-commit per garantire che un commento di commit faccia sempre riferimento a un numero di problema nel sistema di tracciamento del problema. Ad esempio, un commento come

fixes frobulator when the moon is full (bug 1234)

sarebbe accettato perché contiene un numero di errore. Anche con questo accordo, devi ancora fidarti dello sviluppatore per inserire un commento e un numero di bug significativi.

+0

1.6 ora include la corrispondenza reg-ex dei numeri di bug e può generare un avviso se non viene trovato alcun numero di bug (non lo rifiuterà, ma meglio di niente). –

1

nostra procedura di pre-commit hookscript (finestre batch):

@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) 
6

Non TortoiseSVN, ma Subversion stesso - un'impostazione sul server. È possibile impostare un hook di pre-commit che impone un commento di commit. Esistono anche hook pre-commit che verificheranno la presenza di un riferimento a un sistema di tracciamento di problemi come Jira se si vuole fare un ulteriore passo avanti.

+3

TortoiseSVN ha la proprietà tsvn: logminsize. Se imposti quella proprietà ad es. 10, quindi il pulsante OK resterà disabilitato fino a quando non saranno inseriti almeno 10 caratteri come messaggio di commit. – Stefan

+0

+1 per il suggerimento di Stefan. Ho usato i ganci pre-commit per un po ', ma questo eviterà agli sviluppatori di lamentarsi del fatto che vedono solo il messaggio di errore di commit DOPO che tutte le modifiche sono state inviate al server. – Michael12345

0

TortoiseSVN è un client, è possibile che si desideri force comments on the subversion server. Oppure puoi dire loro di commentare i loro commit.

+0

Questo è lo stesso link che avevo originariamente messo tra i segnalibri quando ho creato il mio script, l'unico problema che ho avuto è che richiede un percorso diretto per la funzione di chiamata. – Nate

3

È necessario utilizzare un hook di pre-commit che è un'impostazione del server, ne ho scritto uno per VisualSVN che è fondamentalmente un file batch - sono disponibili script simili per server SVN non basati su Windows.

@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 
1

È possibile forzare un commettere commento abbastanza facilmente, ma quello che vi ritroverete con un milione di commit è che dicono "debug" o "testing".

Se i tuoi sviluppatori non vedono il valore nell'aggiunta di messaggi di commit che li costringono a digitare qualcosa che non è stato modificato da.

Ciò che è peggio è quando gli utenti di Eclipse hanno integrato SVN/CVS in modo tale da ricordare il loro ultimo messaggio di commit - e finiscono per commettere un file completamente non correlato con il messaggio dall'ultima attività/progetto.

Problemi correlati