A menudo veo un montón de confirmaciones, pero no hay notas que hagan referencia a los tickets ... Y así termino volviendo atrás y revisando el diff manualmente. No necesariamente es malo, pero sería bueno tener notas. ¿Algunas ideas?¿Cómo puedo obligar a nuestros desarrolladores a ingresar notas cuando se comprometen a través de TortoiseSVN?
Respuesta
Claro, pero ¿cómo va a hacer cumplir los mensajes de compromiso no galimaticos, significativos y contextualizados?
Mejor golpee a sus compañeros de trabajo irresponsables cuando note una comisión coja/vacía. O el equivalente verbal de golpe. Solo asegúrate de que se sientan mal, se lo merece.
Es cierto que un script precomprometido no impedirá que las personas tipeen "proyecto actualizado" en el cuadro, pero he visto los mensajes de compromiso pasar del 90% vacío al 90% mensajes razonables aquí después de implementar uno. Tienes que hacer menos puñetazos si tienes un script de precompromiso. –
Cattleprods por encargo solo para este propósito. –
Puede definir una secuencia de comandos de enlace de precomisión que rechaza todas las confirmaciones con un mensaje de registro vacío o demasiado corto.
Aquí hay un post sobre cómo hacerlo.
He utilizado una secuencia de comandos de enlace precompromiso para garantizar que un comentario de compromiso siempre se refiera a un número de problema en el sistema de seguimiento de problemas. Por ejemplo, se aceptará un comentario como
fixes frobulator when the moon is full (bug 1234)
porque contiene un número de error. Incluso con este acuerdo, aún debe confiar en el desarrollador para insertar un comentario significativo y un número de error.
1.6 ahora incluye coincidencia reg-ex de números de error y puede generar una advertencia si no se encuentra un número de error (no lo rechazará, pero es mejor que nada). –
Nuestra pre-commit hookscript (ventanas 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)
No TortoiseSVN, pero Subversion en sí - un entorno en el servidor. Puede configurar un enlace precompromiso que refuerza un comentario de compromiso. También hay ganchos de precompromiso que verificarán la presencia de una referencia a un sistema de seguimiento de problemas como Jira si desea ir un paso más allá.
TortoiseSVN tiene la propiedad tsvn: logminsize. Si configura esa propiedad, p. 10, luego el botón OK permanecerá deshabilitado hasta que se ingresen al menos 10 caracteres como mensaje de confirmación. – Stefan
+1 por sugerencia de Stefan. He utilizado ganchos de precompromiso durante un tiempo, pero esto evitará que los desarrolladores se quejen de que solo ven el mensaje de error de confirmación DESPUÉS de que se hayan enviado todos los cambios al servidor. – Michael12345
TortoiseSVN es un cliente, es posible que desee force comments on the subversion server. O puede decirles que comenten sus compromisos.
Ese es el mismo enlace que originalmente marqué cuando construí mi script, el único problema que tuve fue que requiere una ruta directa para la función de llamada. – Nate
Necesita utilizar un enganche precompromiso que es una configuración de servidor, he escrito uno para VisualSVN, que es básicamente un archivo por lotes; scripts similares están disponibles para servidores SVN que no están basados en 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
Puede forzar un comentario comprometerse con bastante facilidad, pero lo que va a terminar con un millón de commits es que dicen "depuración" o "prueba".
Si sus desarrolladores no ven el valor de agregar mensajes de confirmación forzándolos a escribir , algo no va a cambiar eso.
Lo que es peor es cuando los usuarios de Eclipse tienen SVN/CVS integrado, de modo que recuerda su último mensaje de confirmación, y terminan asignando un archivo completamente no relacionado con el mensaje de su última tarea/proyecto.
- 1. ¿Cómo puedo obligar a GDB a desmontar?
- 2. TortoiseSVN a través de un script proxy
- 3. ¿Cómo puedo obligar a Vaadin a actualizar la pantalla?
- 4. ¿Cómo puedo obligar a los usuarios a acceder a mi página a través de HTTPS en lugar de HTTP?
- 5. ¿Cómo puedo obligar a Grails a usar solo un idioma?
- 6. ¿Cómo puedo obligar a mercurial a aceptar un commit vacío
- 7. La mejor manera de obligar a un usuario a ingresar un número entero en Matlab
- 8. PoolTimeoutException cuando se conecta a Cassandra a través de Astyanax
- 9. ¿Cómo puedo obligar a Doxygen a mostrar la ruta completa de inclusión?
- 10. Git se comprometen a submódulo común (rama principal)
- 11. ¿Cómo puedo obligar a GCC a compilar funciones que no se utilizan?
- 12. ¿Puedo obligar a los navegadores web a enviar texto de formulario como UTF8?
- 13. Obligar a linq a realizar uniones internas
- 14. Obligar a ConfigurationManager a volver a cargar todas las secciones
- 15. Visual Studio 2005/2008: ¿Cómo puede compartir/obligar a todos los desarrolladores a usar las mismas reglas de formato?
- 16. La mejor manera de obligar al usuario a ingresar una hora en un JTextField
- 17. Texto enviado a notas
- 18. ¿Cómo puedo probar cuando se agregó una característica a Perl?
- 19. ¿Cómo puedo obligar a XmlWriter a manejar espacios de nombres correctamente?
- 20. TortoiseSVN ¿cómo se desactiva/habilita TSVNCache.exe a través de la línea de comandos?
- 21. ¿Cómo puedo ingresar a un método decorado con DebuggerStepThroughAttribute?
- 22. Obligar a Eclipse a generar makefiles estándar de Unix
- 23. ¿Cómo demostrar a nuestros usuarios que no están siendo engañados?
- 24. ¿Cómo puedo enumerar a través de JObject?
- 25. ¿Cómo puedo obligar a iOS Safari a ignorar la rotación EXIF?
- 26. ¿Cómo puedo obligar a asp.net webapi a decodificar siempre los datos POST como JSON
- 27. ¿Cómo se puede obligar a Mercurial (hg) a tratar un archivo como binario?
- 28. Cómo conectarse a DB, cuando se ejecuta a través de la línea de comando
- 29. MediaElement.js: ¿obligar a Chrome a usar Flash Player?
- 30. ¿Cómo enviar cookies cuando se conecta a socket.io a través de WebSockets?
Es posible que aún tenga problemas incluso cuando necesite notas. Mucha gente termina poniendo "Actualizado" o similar.Si aún no lo ha hecho, vale la pena explicar a todos los desarrolladores cómo esos comentarios pueden ayudar a largo plazo. p.ej. poder ver la motivación para un cambio dentro de un año. – Shaun
Véase también [Creación de un gancho de comentario requerido para Tortoise SVN] (http://stackoverflow.com/questions/1208900/creating-a-required-comment-hook-for-tortoise-svn). –