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?
Antwort
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.
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. –
Cattleprods auf Bestellung für genau diesen Zweck. –
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.
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.
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). –
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)
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.
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
+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
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.
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
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
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.
- 1. Wie kann ich Benutzer zwingen, SVN-Commits über Arcanist durchzuführen?
- 2. TortoiseSVN commit Verknüpfung
- 3. Wie kann ich ein Commit mithilfe eines SHA rückgängig machen?
- 4. TortoiseSVN über ein Proxy-Skript
- 5. Machen Sie ein Diff mit Änderung Commit
- 6. Wie füge ich zusammen, wenn ein Commit die Änderungen von einem anderen Commit enthält?
- 7. Wie kann ich den letzten Commit rückgängig machen?
- 8. Wie kann ich ein Evernote-Entwickler-Token beantragen?
- 9. Wie kann ich einen älteren Commit HEAD in Git machen?
- 10. Wie kann ein Entwickler etwas über Webdesign lernen?
- 11. Ich kann nicht ein Foto machen, wenn Videoanruf mit Twilio
- 12. Wie verwalten und erfassen Sie Datenbankänderungen über mehrere Entwickler hinweg?
- 13. Wie füge ich ein Commit in ein früheres Commit ein?
- 14. Kann ich eine Methode einer abstrakten Klasse dazu zwingen, etwas zurückzugeben?
- 15. Wie kann ich Aktionen im HomeController ausführen, ohne "Home" einzugeben?
- 16. Wie kann ich ein Programm über die Befehlszeile ausführen, ohne den vollständigen Pfad einzugeben?
- 17. Wie kann ein Revert-Commit auch ein Merge-Commit sein?
- 18. RxJS: Wie kann ich ein "wenn" mit Observablen machen?
- 19. Wie kann ich Cordova dazu bringen, ein benutzerdefiniertes iOS-Framework automatisch über ein Plugin einzubetten?
- 20. Muss ich jedes Mal, wenn ich ein Commit machen möchte, Dateien zu Git hinzufügen?
- 21. Wie kann ich ein besserer WPF-Entwickler werden?
- 22. Wie kann ich TortoiseSVN sicher neu starten?
- 23. Wie kann ich ein ContextMenu zum Schließen zwingen (WPF-Projekt)?
- 24. Wie kann ich die Browser-Version über piwik verfolgen?
- 25. Kann ich Gerrit dazu bringen, mich zu benachrichtigen, wenn ein bestimmter Dateityp geändert wurde?
- 26. Wie kann ich GDB zum Zerlegen zwingen?
- 27. Wie kann ich ein Git Commit ohne ein früheres tun?
- 28. Wie kann ich ein Bild undurchsichtig machen?
- 29. Wie kann ich ein Etikett mehrzeilig machen?
- 30. Eine Revision von TortoiseSVN löschen
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
Siehe auch [Erstellen eines erforderlichen Kommentar-Hooks für Tortoise-SVN] (http://stackoverflow.com/questions/1208900/creating-a-required-comment-hook-for-tortoise-svn). –