Mi equipo usa Team Foundation Server para el control de fuente, y hoy arreglé algunos errores y la aplicación de prueba de humo antes de registrarlo, pero olvidé comentar algo de código. (Este código hizo que la interfaz de usuario fuera un poco extraña).
Quiero saber qué buenas prácticas hay antes de registrar el código; no quiero volver a cometer este tipo de error.
Nunca debe registrar el código comentado. Si tiene un código que necesita comentarse antes de registrarse, lo está haciendo mal.
En cuanto a las reglas:
Construir
3.1 Corregir errores de compilación
Ejecutar pruebas
4.1 Arreglar pruebas rotas
Vaya a 1 (hasta que no haya nada nuevo que obtener)
Solo regístrese cuando todos los pasos estén completos.
Ver check-in dance .
Otras buenas prácticas:
fuente
rebase -i
y limpiar su historial local, aplastando los compromisos según sea necesario, por lo que la línea principal no tiene compromisos feos de trabajo en progreso.No estoy tratando de ser demasiado comadreja aquí, pero la suposición en esta pregunta (y todas menos una de las respuestas) se aplica principalmente a VCS centralizado, como TFS, SVN, Perforce, etc. Lo
suficientemente justo, es lo que el OP está usando.
Por otro lado, sin embargo, cuando usa DVCS (como Mercurial y Git), generalmente no debe esperar para registrarse, y la mayoría de las cosas mencionadas en las respuestas, como diffs, get latest, merge, etc., no son necesarias . Incluso cosas como las revisiones de código y las pruebas son mejores que hacer después del registro (aunque tal vez antes de presionar, dependiendo ...)
La única excepción que vi aquí (hasta ahora) se asocia con un elemento de trabajo. Por supuesto, comentar sobre el registro también es bueno ...
fuente
Tres cosas que no vi en otras respuestas:
Incluir nuevos archivos
Revertir archivos sin cambios
Verifique su confirmación enviada
Dos cosas cuando uso Git:
Comisiones atómicas:
git add --patch
dividir mi cambio en varias partes si es necesario.Ver diferencias mientras se resume
git commit --verbose
para poder ver una diferencia de mi cambio mientras escribo mi mensaje de confirmación. (O uso mi parche git-vim para mostrar la diferencia).fuente
Algunos elementos de 'buenas prácticas' que impongo en los servidores de mi equipo son bastante sencillos. Primero, antes de registrarse, siempre debe obtener la última versión y ejecutar una compilación local, para asegurarse de que nadie más haya verificado nada en lo que el código choque. Además, tenga cuidado con cualquier conflicto de código en su máquina local, no en el servidor. Una vez que se haya confirmado que su código, con el último código descargado, se compila y funciona correctamente, estará listo para el siguiente paso. Ejecute cualquier prueba automatizada y luego comience el check-in para asegurarse de que todavía funcione correctamente. Luego, solo para estar seguro, obtenga las últimas novedades nuevamente.
Es posible, como administrador de TFS, hacer cumplir los comentarios en todos los registros. Recomendaría siempre incluir comentarios de check-in para su trabajo, independientemente de si se aplica o no. Si tiene la opción de hacerlo, aplíquelo. Asegúrese de que los comentarios son, al menos, un resumen general de lo que ha cambiado desde la última vez que revisó su código. De esa manera, si algo sale mal, puede revisar los registros y ver, aproximadamente, qué fue cambiado en ese check-in. Hace que la depuración de una compilación rota sea mucho más fácil.
Además, si tiene privilegios de administrador de TFS, haga cumplir las compilaciones sucesivas en los registros (para asegurarse de que todos los demás sepan de inmediato si su registro rompe algo), y puede configurar el servidor para que realice un registro controlado ( si el código registrado rompe la compilación, el servidor lo rechaza), o simplemente puede hacer que cree un error y lo asigne a quien rompió la compilación.
Hay algunas otras opciones que puede activar o desactivar para mantener todo en orden, o sugerirle a su administrador de TFS que lo active para mantener las cosas agradables y limpias ... pero son en gran medida preferidas
fuente
Buscar y reemplazar palabras de maldición ;-)
fuente
Si está ingresando desde Windows, verifique si su código no tiene esos caracteres ^ M invisibles: los editores en UNIX a menudo dan errores / advertencias debido a eso.
También intente y reemplace las pestañas: diferentes usuarios terminarán viendo las pestañas de manera diferente, algunas con 4 espacios, otras 8 y no son buenas para la legibilidad del código.
El mejor enfoque en mi humilde opinión es que un script predefinido verifique su código con las pautas de codificación de su organización. Un montón de sistemas de control de fuente tienen esta funcionalidad.
fuente
En mi empresa utilizamos revisiones de registro. Estos no tienen que ser detallados, pero solo mostrarle a alguien las diferencias en su lista de cambios y hablar a través de ellos a veces resaltará el error tipográfico extraño que se perdió en las pruebas.
Nuestro servidor de control de fuente no le permitirá registrarse a menos que indique el nombre del revisor en los comentarios (en el formulario! Iniciales, por ejemplo! BW si Bruce Wayne hizo su revisión). El revisor recibe un correo electrónico indicando que ayudó a revisar. Esto está abierto a una explotación obvia, pero parece funcionar bastante bien.
fuente
Siempre que sea posible, me gusta asociar un check-in con un elemento de trabajo. Esto le brinda información contextual sobre POR QUÉ se cambió esto, no solo QUÉ se cambió. TFS tiene un sistema de seguimiento de elementos de trabajo bastante decente, por lo que es bastante trivial en el momento del check-in.
(esto es además de revisar las diferencias de mis cambios)
fuente
Una pequeña cosa que hago es no registrar los archivos que realmente no han cambiado. Estos archivos pueden haber sido modificados inadvertidamente, o pueden haber estado involucrados en refactorizaciones que se han revertido o se han convertido en discutibles.
De esta manera, su conjunto de cambios (asociado con un elemento de trabajo) contiene exactamente los archivos necesarios para satisfacer el elemento de trabajo.
fuente
Para combinar todas las respuestas aquí y dar una lista de verificación completa
[entrada / salida] no debe registrarse directamente en la transmisión en la que otros están trabajando. Debe tener una estrategia de transmisión: por ejemplo, por desarrollador, una transmisión en la que pueda ingresar y salir independientemente sin molestar a los demás: su trabajo esté seguro pero en su propia secuencia de desarrollo, así que [solo en su propia secuencia de desarrollo]. Con cada verificación, lo asocia con un registro de cambios para que sus cambios sean atómicos contra ese cambio llamado conjunto de cambios (para que pueda distribuir los rfc / errores individuales, etc., sin tener que entregar 'todo').
[luego vuelve a redactar con la secuencia de tu equipo] significa que obtienes los cambios de otros en tu propia secuencia. Durante esa operación, puede ver en el diálogo de fusión todos los "diffs" y revisarlos o ... si hay miles y / o está usando no código, sino también, por ejemplo, modelos de datos / proyectos siebel, etc., confíe en fusiones no triviales, fusiones triviales automáticas y triviales, la última categoría contiene las difíciles. Recuerde que todavía está trabajando en su propia secuencia.
[rebase completo] Si todo está bien, compruebe todos los cambios que acaba de recibir de la transmisión del equipo: su propia transmisión ahora está actualizada
[entregar] ahora entrega tu trabajo a la transmisión del equipo. SI no desea entregar todo, también puede seleccionar, por ejemplo, 1 RFC específico con esas versiones específicas de archivos o un conjunto de RFC / defectos resueltos.
[entrega de prueba] debería funcionar bien, pero dado que existe la posibilidad de que alguien entregue cambios también: puede probar si su trabajo funciona con los últimos cambios en la transmisión del equipo. Con los mismos diálogos de fusión que muestran diferencias.
[completar entrega] completa tu entrega y tu trabajo ahora está en la secuencia del equipo.
Para hacerlo más complejo: dado que todavía existe la posibilidad de que el trabajo que entregó = ok, PERO ya está trabajando en una versión adicional, debe usar la línea de base siempre después de la entrega e indicar qué línea de base es la preferida para otros usuarios. . Eso asegura que otros desarrolladores obtengan una recomendada y no la última versión en la transmisión (si está trabajando en ese escenario). Esa es también una verificación triple, de modo que incluso si las últimas versiones en la secuencia del equipo son "malas", todavía no son las que otros desarman o miran y su administrador de configuración puede fusionar la versión anterior a la siguiente versión para deshacer su entrega
En su ejemplo, indica que olvidó comentar el código. Los errores suceden. El sistema de gestión de la configuración a su alrededor debería ocuparse de ello. Realmente puede ser que, por ejemplo, entren miles de cambios y las "compilaciones" e "integraciones" se realicen en una jerarquía de flujos en diferentes servidores encadenados y procesados a tiempo. Entonces, incluso después de 5 meses, su código comentado se prueba en un servidor de integración porque su código necesita integración con otro código y sistemas, aún así debería ser posible sacar atómicamente su conjunto de cambios y continuar. Entonces, la mejor práctica es más o menos en un nivel superior. El diseño general de las secuencias de gestión de configuración debe ocuparse de ello. Para desarrolladores individuales, la mejor práctica es, por supuesto, validar / prueba unitaria. Pero desde el panorama general hasta "
fuente
Algunos de los siguientes se aplican más que otros (o en diferentes formas) dependiendo de su SCM, así que aquí van:
NOTA : algunos de los elementos anteriores parecen bastante obvios, pero no creería cuántas personas trabajan realmente en la rama principal o realizan cambios en la producción primero y luego crean manualmente deltas para pasar al control de versiones ... directamente en la rama principal. .. y con etiquetas. Dulce como la bilis fermentada mezclada con jugo de axila sin lavar ... sí, así.
fuente
Tener una lista de verificación personal. Comience vacío cuando comete un error, en una entrada. Cuando se convierta en una segunda naturaleza, elimínelo de la lista.
Ejecute las pruebas. Si pasan, regístralo. Si te equivocas y algo pasa de las pruebas, escribe una prueba.
fuente
Hacemos lo siguiente ...
Prueba: queremos asegurarnos de que funcione. Por lo menos, queremos saber que no rompe nada.
Revisión de código, o al menos una verificación de amigos: esta es una excelente manera de garantizar que el conocimiento se difunda y que las personas se mantengan actualizadas. También ayuda a detectar errores antes de registrar cosas.
Enviar una notificación anticipada: se envía una notificación anticipada al grupo antes de registrarse. El propósito no es solo hacer que otros sepan qué archivos o áreas están cambiando, sino que les da aviso (en caso de que decidan tomar nota) en caso de que se espere que esos cambios los afecten.
Algunas horas después de enviar el aviso anticipado, se realiza el registro y se informa al grupo por correo electrónico. Todos en el grupo pueden saber cuándo se realiza el trabajo particular en un error o característica.
Se pega una copia del aviso de registro en el registro de corrección asociado con el error o la función. Al buscar a través de los registros, encontramos que es muy útil tener una idea de lo que implica la corrección / función.
fuente
Ejecute sus pruebas unitarias en las que ha estado trabajando tan diligentemente. El verde es bueno
fuente
Asegúrese de que su código esté formateado correctamente (por ejemplo, para Java: seleccione su código y presione Ctrl-Shift-F en Eclipse). Pero tenga cuidado de hacer lo mismo para un documento completo.
fuente
Siempre, siempre, siempre , verifica que cualquier cambio que hayas realizado no rompa la compilación. Especialmente cambios menores que pueden parecer triviales.
Una vez que hice un cambio muy pequeño que no pensé que causaría ningún problema justo antes de dejar el trabajo para el fin de semana. Efectivamente, ese pequeño cambio rompió la construcción y no se ejecutaron pruebas nocturnas para nuestro proyecto. El jefe de preguntas y respuestas no estaba muy contento con eso, y con razón.
fuente
Busque porciones de sus cambios que pueden entrar como unidades independientes.
A menudo, para cuando tengo una solución o una mejora del código, hay bastantes cambios. Algunos de ellos son específicos del cambio de comportamiento que busco; otros son refactorizaciones que hice para hacer ese cambio más limpio.
Prefiero registrar cada refactorización por separado, con su propia descripción del cambio, como esta:
Luego, una vez que se registra cada refactorización, el cambio de comportamiento final es a menudo trivial.
Además, algunos cambios afectan muchas líneas de código pero no son muy interesantes, mientras que otros cambios están muy localizados pero tienen un impacto importante. Si estos cambios se registran juntos, puede ser difícil leer los diferenciales. Entonces, los mantengo separados.
Más tarde, cuando alguien lee el historial de cambios, es obvio cómo las cosas llegaron al estado actual de las cosas y por qué son así. También es trivial deshacer mi cambio de comportamiento porque no está enredado con toneladas de otras ediciones.
fuente
Haga lo que haría al devolver algo que le pidió prestado a alguien. Asegúrese de que esté limpio y en buen estado. Si hizo un desastre, asegúrese de limpiar antes de devolver el código a su propietario (en la mayoría de los casos, su empleador).
fuente
Mantengo un repositorio local de hg para mi trabajo.
No digo que estos sean los mejores, pero funcionan para mí.
fuente
Cuando escribo código que sé que no debe ser registrado, agrego una línea antes de que contenga "// TEMP:" y luego con "// END TEMP". Esto, junto con hacer diff antes de registrarse, promete que no registraré ese código por error.
fuente
Pruebe a fondo todo lo que agregó o cambió. Pruebe todos los casos posibles que se le ocurran. No deje la prueba al control de calidad. Si tuviera un sándwich por cada vez que hiciera algún cambio menor, y luego probara algunos casos de prueba solo para estar seguro, e inmediatamente viera problemas, tendría muchos sándwiches. Por lo general, me digo en voz alta: "Estoy muy contento de haber intentado eso ..."
Dices que la IU se volvió extraña después de tu cambio. Si solo hubiera ejecutado el programa y hubiera mirado la interfaz de usuario antes de registrarse, ¿habría notado el problema?
fuente