2009-12-18 5 views
6

Ich sehe oft eine Reihe von Commits, aber keine Notizen zu den Tickets ... Und so komme ich zurück und überprüfe das Diff manuell. Nicht unbedingt schlecht, aber es wäre schön, Notizen zu haben. Irgendwelche Ideen?Wie kann ich unsere Entwickler dazu zwingen, Notizen einzugeben, wenn sie über TortoiseSVN ein Commit machen?

+1

Sie können immer noch auf Probleme stoßen, auch wenn Sie Notizen benötigen. Viele Leute landen in "Aktualisiert" oder Ähnlichem.Wenn Sie es noch nicht getan haben, lohnt es sich, allen Entwicklern zu erklären, wie diese Kommentare auf lange Sicht helfen können. z.B. in der Lage zu sein, die Motivation für eine Veränderung in einem Jahr zu sehen. – Shaun

+0

Siehe auch [Erstellen eines erforderlichen Kommentar-Hooks für Tortoise-SVN] (http://stackoverflow.com/questions/1208900/creating-a-required-comment-hook-for-tortoise-svn). –

Antwort

2

Sicher, aber wie werden Sie nicht-Kauderwelsch, sinnvolle und kontextualisierte Commit-Nachrichten erzwingen?

Besser, nur Ihre unverantwortlichen Kollegen zu schlagen, wenn Sie eine lahme/leere Verpflichtung bemerken. Oder das verbale Äquivalent von Punsch. Stell nur sicher, dass sie sich schlecht fühlen, es ist verdient.

+2

Es stimmt, dass ein Pre-Commit-Skript die Leute nicht davon abhält, "aktualisiere Projekt" in das Feld einzugeben, aber ich habe gesehen, dass die Commit-Nachrichten von 90% leer zu 90% vernünftigen Nachrichten hier nach der Implementierung gehen. Sie müssen weniger Stanzen machen, wenn Sie ein Vorab-Skript haben. –

+1

Cattleprods auf Bestellung für genau diesen Zweck. –

5

Sie können ein Vorab-Hook-Skript definieren, das alle Commits mit einer leeren oder zu kurzen Protokollnachricht zurückweist.

Hier ist eine post auf, wie es geht.

1

Ich habe ein Vorab-Commit-Hook-Skript verwendet, um sicherzustellen, dass ein Commit-Kommentar immer auf eine Problemnummer im Issue-Tracking-System verweist. Beispielsweise wird ein Kommentar wie

akzeptiert, da er eine Fehlernummer enthält. Auch bei dieser Vorgehensweise müssen Sie dem Entwickler dennoch vertrauen, dass er eine aussagekräftige Kommentar- und Fehlernummer eingibt.

+0

1.6 enthält nun einen reg-ex-Abgleich von Fehlernummern und kann eine Warnung ausgeben, wenn keine Fehlernummer gefunden wird (wird nicht abgelehnt, aber besser als nichts). –

1

Unser pre-commit hookscript (Windows-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

Nicht TortoiseSVN, aber Subversion selbst - eine Einstellung auf dem Server. Sie können einen Vorab-Hook einrichten, der einen Commit-Kommentar erzwingt. Es gibt auch Pre-Commit Hooks, die das Vorhandensein eines Verweises auf ein Issue Tracking System wie Jira verifizieren, wenn Sie einen Schritt weiter gehen wollen.

+3

TortoiseSVN verfügt über die Eigenschaft tsvn: logminsize. Wenn Sie diese Eigenschaft z. 10, dann bleibt die OK-Schaltfläche deaktiviert, bis mindestens 10 Zeichen als Commit-Nachricht eingegeben wurden. – Stefan

+0

+1 für Stefans Vorschlag. Ich habe Pre-Commit Hooks für eine Weile verwendet, aber dies wird Entwickler vermeiden, sich darüber zu beschweren, dass sie nur die Commit-Fehlermeldung sehen, nachdem alle Änderungen an den Server gesendet wurden. – Michael12345

0

TortoiseSVN ist ein Client, den Sie möglicherweise möchten force comments on the subversion server. Oder Sie können ihnen sagen, ihre commits zu kommentieren.

+0

Das ist derselbe Link, den ich ursprünglich mit einem Lesezeichen versehen habe, als ich mein Skript erstellte. Das einzige Problem, das ich hatte, war, dass es einen direkten Pfad für die Anruffunktion benötigt. – Nate

3

Sie müssen einen Pre-Commit-Hook verwenden, der eine Servereinstellung ist, ich habe eine für VisualSVN geschrieben, die im Grunde eine Batch-Datei ist - ähnliche Skripte sind für Nicht-Windows-basierte SVN-Server verfügbar.

@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

Sie können einen Kommentar begehen zwingen leicht genug, aber was Sie am Ende mit einer Million Commits ist, die „Debugging“ oder „Test“ sagen.

Wenn Ihre Entwickler den Wert beim Hinzufügen von Commit-Nachrichten nicht sehen, der sie dazu zwingt, etwas zu schreiben, wird das nicht geändert werden.

Was noch schlimmer ist, wenn Eclipse-Benutzer SVN/CVS integriert haben, so dass sie sich ihre letzte Commit-Nachricht merken - und sie am Ende eine komplett unabhängige Datei mit der Nachricht von ihrer letzten Aufgabe/Projekt übergeben.

Verwandte Themen