2010-02-22 14 views
14

Un grupo de desarrolladores con el que estoy trabajando cambió de VSS a SVN hace aproximadamente medio año. La transición de CheckOut-CheckIn a Update-Commit ha sido difícil para una cantidad de usuarios. Ahora que ya no están obligados a verificar sus archivos cuando terminan (o con mayor precisión, ahora que nadie más puede ver que tienen el archivo desprotegido y les piden que lo vuelvan a verificar para liberar el bloqueo en el archivo), ha sucedido en más de una ocasión que los usuarios han olvidado confirmar sus cambios hasta mucho después de que se hayan completado.Cómo alentar más compromisos frecuentes para SVN

Aunque la mayoría de los usuarios son buenos acerca de Commitir sus cambios, el problema es tan grave que la decisión podría tomarse para forzar a los usuarios a get locks on all files in SVN before editing. Prefiero no ver que esto suceda, pero no sé cómo mejorar la situación de otra manera. Entonces, ¿puede alguien sugerir maneras de hacer cualquiera de las siguientes:

  1. Track lo que los usuarios los archivos se han editado pero no han tenido cambios todavía comprometidos para
  2. Fomentar usuarios a ser más consistente con confirmar los cambios cuando se hacen
  3. ayudar a terminar fuera de la educación de los usuarios necesarios para que la gente se utilizan para el nuevo paradigma de control de versiones

fuera de la caja soluciones bienvenidos (es decir: programa de escritorio que recuerda a los usuarios para cometer si no han don Por lo tanto, en un intervalo determinado, obtendrá automáticamente las estadísticas de las tasas de aceptación del usuario y enviará correos electrónicos de advertencia si la frecuencia cae por debajo de un cierto umbral, etc.

+4

registro o nos encontraremos desarrolladores que los registros para reemplazar siempre funciona –

Respuesta

14

... los usuarios han olvidado confirmar sus cambios hasta mucho después de que se hayan completado.

Creo que este es el problema aquí. ¿Cómo se puede "completar" una característica/corrección de errores si no está registrada? ¿Tiene un sistema de seguimiento de problemas que registra problemas pendientes? ¿Tiene un sistema de integración continua que ejecuta pruebas unitarias tan pronto como se realiza un checkin?

Si los desarrolladores simplemente están haciendo lo suyo sin responsabilidad, entonces no es sorprendente que tenga problemas para lograr que todos cooperen. Necesitará algún tipo de supervisión (¿gerente de proyecto ?, ¿jefe de equipo?) Que es responsable de asegurarse de que los desarrolladores individuales cooperen con el resto del equipo de desarrolladores.

+0

Lamentablemente, las pruebas unitarias y la integración continua todavía están en las primeras etapas de adopción. E incluso con las pruebas unitarias, si el usuario olvidó confirmar sus pruebas unitarias para el proyecto de prueba, entonces las pruebas aún podrían pasar, olvidando Commitir. –

+0

En serio, este es el tipo de cosas que el gerente de desarrollo/líder debe abordar y hacer cumplir. –

+1

@Yaakov Ellis, ¿qué tal si no tenemos a la misma persona escribiendo el código y las pruebas de la unidad? – Abizern

0

Lea el registro de compromiso y pregunte a las personas sobre su estado y cuándo habrán verificado sus cambios. Comprometerse con piezas enteras es mejor que comprometerse como si fuera una forma de 'salvar'.

¿Cómo puede un desarrollador terminar algo y olvidarse de registrarlo? ¿El proceso de entrega es tal que el usuario ejecuta una compilación desde la propia máquina del desarrollador?

+0

lectura el registro de compromiso funciona en teoría, pero es difícil de hacer manualmente. Algún tipo de método automatizado sería preferido.El proceso del proceso de entrega puede involucrar a un tercer usuario Actualizando desde SVN y luego cargando cambios. Desafortunadamente, todavía hay mucho camino por recorrer con las pruebas unitarias, por lo que no hay forma de verificar automáticamente que se hayan incluido todos los cambios (e incluso si existiera, también existiría el mismo problema de olvidar cometer nuevas pruebas unitarias). –

6

¿Utiliza algún tipo de software de seguimiento de funciones/errores?
Puede pedirles que incluyan un número de revisión cuando marquen el trabajo completado.

+0

Utilice FogBugz para el seguimiento de errores y software de fabricación nacional para el seguimiento de tareas en nuevos proyectos. –

+0

+1 y también configura el rastreador de errores para que requiera cierto control de calidad, p. revisiones de código o exámenes de prueba. ¡Es una buena idea de todos modos y ciertamente obliga a las personas a comprometerse! – MarkJ

5

Creo que el problema que tiene es en realidad la falta de un combinador de sistema de construcción con un seguimiento de errores/características/cambios. Con un sistema de seguimiento de fallas y una construcción contigua, el desarrollador puede reclamar 'completo' solo después de que sus cambios llegaron a la compilación automatizada y se genera una versión que contiene los cambios, pasa las pruebas de validación de compilación y se descarta en la ubicación de lanzamiento de lanzamiento. Como la única forma de hacer un cambio para 'convertirlo' en una construcción es registrarse (una posible integración inversa de la rama característica en la rama principal/troncal), los desarrolladores tendrán que registrarse, de lo contrario, nunca terminarán nada. .

2

En un grupo de desarrollo de la pequeña, he visto un email diario enviado al grupo de carreras de caballos 'que muestra el número de confirmaciones, el total de líneas, etc' lista que muestra un resumen de las confirmaciones desde el día anterior y un oficial de correo' dentro de los últimos 30 días para ser útil. Obviamente, no puedes usar la cantidad de checkins como cualquier tipo de métrica de rendimiento, pero sigue siendo divertido y mantiene el control de la fuente en la mente de todos. "Oye, Joe acaba de pasarme por los controles este mes, oh, espera, nunca revisé ese código ayer".

Esto también tiene otras ventajas ya que las personas entran por la mañana y lo leen en su café o lo que sea que guarde lo que otras personas están haciendo en la mente de los desarrolladores. Cuando entramos en el 'congelamiento del código' y nos acercamos a un lanzamiento, en realidad cambiamos el correo electrónico de solo un resumen de checkin, para incluir los 'diffs' reales, de modo que cada línea de código tenga muchos ojos de inmediato.

+0

¿Conoces alguna herramienta automatizada que pueda producir tal correo electrónico? –

+0

Lo siento, creo que uno de nuestros desarrolladores escribió nuestra secuencia de comandos de correo electrónico una noche por diversión y simplemente se puso de moda. – bdk

+0

Si un desarrollador ignora el control de origen, ¿no es probable que ese desarrollador también ignore el mensaje de correo electrónico diario? –

1

Normalmente, lo que anima a los desarrolladores a cometer con frecuencia es la autopreservación. Cuando las actualizaciones se vuelven difíciles para ellos debido a conflictos de fusión y descubren que el problema se alivia presionando sus cambios, se comprometerán más a menudo.

Parece que hay algo fundamentalmente malo, sin embargo. ¿Cómo están obteniendo sus desarrolladores los cambios en el producto lanzado sin pasar por el VCS? Deberías cerrar esa puerta trasera.

+1

"¿Cómo están obteniendo sus desarrolladores los cambios en el producto lanzado sin pasar por el VCS?" - Ese es el problema. En una pequeña cantidad de casos, el código no se ha liberado cuando debería haberlo sido. Estoy intentando encontrar una manera de cerrar esa puerta trasera ahora mismo. –

6

Si usó VSS anteriormente, probablemente trabaje en Visual Studio. AnkhSVN tiene una ventana de cambios pendientes, como la de TFS y VSS. Esta ventana de herramientas muestra automáticamente qué archivos se modifican localmente en su solución.

El uso de esta ventana de cambio pendiente para sus cambios facilita el trabajo en cambios pequeños/lógicos y confirma esos cambios anticipadamente en lugar de posteriores.

[Ver captura de pantalla de una versión anterior AnkhSVN]

+0

De manera similar, en Eclipse, los archivos con cambios locales se marcan en el Explorador de paquetes con un pequeño icono que indica el estado del archivo svrt svn. (cilindro de oro = sin cambios locales desde la última actualización, estrella marrón = modificado, azul '+' = añadido, etc.). Si tienes esa vista abierta todo el tiempo, te acostumbras a ver eso y todos los cilindros de oro significan "Todo lo que he hecho ha sido cometido". – MatrixFrog

4

obtener una máquina de construcción automatizado (o al menos una persona muy dedicada haciendo construye), y desplegar solamente de esa máquina. Entonces, su código no se implementa hasta que se compromete, y ayuda a garantizar que nada quede fuera del repositorio.

Además, tener al menos unos pocos miembros de un equipo comprometiéndose temprano y, a menudo, por lo general anima a otros a mantenerse al día también, porque el compromiso lento tiene que lidiar con más conflictos de fusión locales.

0

Un rastreador de errores/características decente te permitirá agregar un número de error cuando confirmes tus cambios. Por ejemplo, si estoy ejecutando Redmine, puedo comprometerme con "Fixes # 323" en algún lugar de mi mensaje de confirmación de subversión y cerrará automáticamente el error/tarea 323. Su configuración es muy sencilla; solo tienes que decirle a Redmine dónde está el repositorio, lo que se pide de todos modos.

De esta forma puede ver qué cambios se han cometido contra cada error, y los errores sin confirmación estarán abiertos (a menos que se cierren manualmente). Puede asignar errores a los hitos, y antes del lanzamiento de un hito, revise los commits contra el error.

Trac también lo hace, al igual que muchos otros.

+0

El problema aquí no es tanto asociar los cometidos con las tareas. Es para asegurarse de que las personas están cometiendo todo. –

+1

Creo que la idea es que diga "¿Solucionó ese error?" y si el desarrollador dice "Sí, pero todavía no lo hice", se considera "no solucionado". – MatrixFrog

+0

La asociación tiene como objetivo garantizar que las personas lo comprometan todo. La idea es que si tomas una tarea de un sitio web, la forma más fácil de decir que se realiza es agregar "Correcciones n.º 323" en el comentario de confirmación, lo que garantiza que haya una confirmación. –

1

automatizar sus construcciones y despliegues, y hacerlo parte del proceso que nada se "hace" hasta que se prueba en el servidor de prueba

Cuestiones relacionadas