Fomenta las confirmaciones frecuentes. Los compañeros de equipo nuevos en el control de versiones pueden sentir que necesitan mantener el código fuera del repositorio hasta que "funcione correctamente". Enseñe a todos a comprometerse temprano y a menudo para encontrar problemas lo antes posible. En lugar de guardar el código hasta que funcione, proponga que sus compañeros de equipo creen ramas para funciones que podrían romper el tronco. Eso lleva a ...
Establezca una práctica de ramificación y etiquetado. Además de las ramas para las funciones, anime a sus compañeros de equipo a usar las ramas para corregir errores importantes. Etiquete las correcciones de errores importantes al principio y al final del trabajo. Mantenga etiquetas (y posiblemente sucursales) para versiones de producción / control de calidad.
Establezca una política para el maletero y cúmplala. Un ejemplo podría ser, "el tronco siempre debe compilarse sin errores". o "el tronco siempre debe pasar todas las pruebas unitarias". Cualquier trabajo que aún no pueda cumplir con los estándares de troncal debe realizarse en una sucursal.
No confirme cambios de formato con cambios de código
Si desea reestructurar el espacio en blanco de un archivo gigante ( Control+ K+ D), está bien. Confirme el cambio de formato por separado del cambio lógico real. Lo mismo ocurre si desea mover funciones en archivos. Confirme el movimiento por separado de la edición real.
fuente
Uno de los conceptos clave que siempre sigo es el de realizar juntos los cambios de código relacionados . El corolario es no realizar cambios de código no relacionados en la misma confirmación . Esto significa que no corrija 2 errores en una confirmación (a menos que sea la misma solución) y no cometa la mitad de una corrección de error en cada una de las 2 confirmaciones. Además, si necesito agregar alguna mejora nueva o algo a una parte no relacionada del sistema que luego necesito para algún otro trabajo, realizo la mejora por separado (y primero). La idea es que cualquier cambio que cualquiera pueda querer tener por sí solo (o revertir por sí solo) debería ser una confirmación separada. Le ahorrará toneladas de dolores de cabeza cuando llegue el momento de hacer fusiones o revertir funciones rotas.
fuente
Ya se han mencionado muchas cosas, y aquí hay algunas más:
Si tiene archivos que no desea en el control de fuente (por ejemplo, configuración, archivos compilados, etc.), agréguelos a la lista de ignorados . De esta manera, observa los archivos que olvida agregar porque siempre espera una lista vacía de archivos que se muestran como desconocidos para SVN.
Agregue un evento de confirmación posterior que enviaría un correo electrónico a la lista de correo de su desarrollador (o uno específico para este objetivo) relacionado con el cambio comprometido e idealmente el parche para él.
Integre con su rastreador de errores para que las referencias a confirmaciones aparezcan en las solicitudes de errores / funciones con enlaces a las diferencias. Los rastreadores de errores como MantisBT admiten esto.
Considere la posibilidad de realizar una integración con integración continua (por ejemplo, CruiseControl.NET ), NAnt for Build y NUnit / VS para pruebas unitarias. De esta manera, una vez que un usuario registra el código o en un intervalo programado, el código se compila, se ejecutan pruebas unitarias y el desarrollador recibe comentarios sobre el proceso. Esto también alertaría al resto del equipo si el repositorio está roto (es decir, no se construye).
fuente
Bueno, lo básico:
fuente
Las respuestas que da la gente son geniales. Mucho de esto se resume en el documento de usuario de svn para conocer las mejores prácticas para SVN .
Repetir:
fuente
Me gustaría resumir las mejores prácticas que sigo:
Debe haber una estructura de repositorio . Personalmente utilizo la siguiente estructura de repositorio:
PA
(pre-alfa),A
(alfa),B
(beta),AR
(lanzamiento alfa),BR
(lanzamiento beta),RC
(candidato de lanzamiento),ST
(estable).Puede encontrar un esquema de mis mejores prácticas de subversión en forma de diagrama que ilustra los principios fundamentales del enfoque de gestión de configuración de software que utilizo.
fuente
Una cosa que he encontrado muy útil es la propiedad svn: external , lo que significa que puede hacer referencia a directorios de otros repositorios al suyo. Ofrece formas realmente agradables de organizar su código y datos. Algunos ejemplos son:
fuente
Utilice la integración con su software de seguimiento de errores. Si usa Bugzilla , puede configurarlo para que si su comentario comience con "Error XXXX", su comentario SVN se agregue automáticamente como un comentario al error dado, incluido un enlace a su interfaz web SVN a esa revisión.
fuente
Conozca las herramientas y convenciones de ramificación y fusión de SVN.
La mejor manera de trabajar con otros miembros del equipo es dividir el trabajo en funciones / correcciones de desarrollo completas, luego trabajar en cambios individuales, cada uno en una rama. Luego, vuelva a fusionar los cambios con la rama / troncal de la línea principal cuando estén completados / listos / aprobados para fusionarse.
De esta manera, las personas pueden trabajar hacia un objetivo común (ya sea en la misma rama o en ramas separadas) sin chocar con otros cambios.
Su kilometraje puede variar, y esto puede ser excesivo para solo dos personas.
fuente
Lo hace mucho más fácil si usa buenas herramientas que se integran bien con SVN. Estos facilitan ver qué se ha cambiado y luego confirmar todos o parte de sus cambios y actualizar con frecuencia su copia de trabajo a la última versión en SVN.
Recomiendo Tortoise SVN (si usa Windows) y Visual SVN (si usa VS).
También vea si puede configurarlo para recibir un correo electrónico o una notificación similar cada vez que se confirma un cambio (generalmente también incluye el mensaje de confirmación y una lista de archivos modificados). Servicios como CVSDude ofrecen esto. Encuentro útil saber que se ha realizado una actualización y luego tener una idea de lo que contiene esa actualización antes de actualizar mi copia de trabajo.
fuente
Además de las políticas de ramificación et al. (donde un tamaño definitivamente no sirve para todos), debe tener buenas confirmaciones:
fuente
La regla de oro para el control de código fuente: regístrese temprano, regístrese con frecuencia
Para obtener consejos sobre cómo organizar su repositorio:
fuente
Consulte con su equipo acerca de sus cambios, o al menos observe la diferencia con mucho cuidado, antes de solucionar cualquier conflicto de fusión. Pídales que revisen el código combinado ellos mismos para asegurarse de que sus adiciones no se pierdan en la combinación.
fuente
Una cosa que he visto que reduce las confirmaciones rotas es tener buenos scripts de confirmación previa. Por ejemplo, puede ejecutar cualquier prueba unitaria antes de que se confirme el cambio. Esto hará que los compromisos sean un poco lentos, pero ahorrarás tiempo al evitar pisar los dedos de los pies de alguien y tener que disculparte. Por supuesto, esto se vuelve mucho más difícil de administrar cuando tienes un gran equipo de desarrollo y compromisos muy frecuentes.
fuente
Uno de los ejemplos de integración con el seguimiento de errores y la aplicación de la política de confirmación podrían ser los scripts de enlace pre / post-compromiso svn de Trac , que pueden rechazar la confirmación si el mensaje de confirmación no hace referencia a ningún ticket en el seguimiento de errores y agrega comentarios a los existentes. tickets basados en el contenido del mensaje (es decir, el mensaje de confirmación puede contener algo como "Arreglos # 1, # 2 y # 8", donde # 1, # 2, # 8 son los números de tickets).
fuente
Mejores prácticas para usar SVN :
Cuando llegó por primera vez a la oficina y abrió su proyecto Eclipse , el primer paso que debe realizar es actualizar su proyecto.
Después de actualizar, comience su trabajo. Cuando termine su codificación, verifíquela correctamente, si su aplicación se ejecuta correctamente sin ninguna excepción. Una vez que esté seguro de que su código funciona bien, es hora de confirmar el código.
Nota: Mientras confirma el código, no se comprometa directamente. Realice una sincronización con el servidor y verifique cuáles son todas las necesidades que deben confirmarse. Nota: No confirme la carpeta completa una vez. Porque es posible que haya realizado algunos cambios en el archivo según sus necesidades o que haya eliminado algunos archivos en su sistema local. Pero la configuración es diferente en el servidor. Así que verifique los archivos individualmente y confirme el código.
No comprometa / actualice archivos de conflicto directamente.
¿Cuándo anular y actualizar?
Cuando esté bastante seguro de que no necesita ninguno de sus cambios locales y desea actualizar la copia del servidor por completo. Tenga en cuenta que una vez que realice la anulación y la actualización, no obtendrá ninguno de los cambios locales.
Nota: No guarde el proyecto sin actualizarlo durante más de un día. Además, no guarde el código sin comprometerse durante muchos días.
Comunique quiénes están trabajando en el mismo componente y analice los cambios que han realizado todos los días.
No confirme las propiedades y el archivo de configuración a menos que haya alguna razón. Porque la configuración será diferente en un servidor y en la nube.
No comprometa las carpetas de destino en SVN, solo el código fuente y las carpetas de recursos deben mantenerse en un repositorio de SVN.
Cuando pierda su código, ¡no se asuste! Puede recuperar la copia anterior del historial de SVN.
No guarde el proyecto en varios lugares de su disco. Compruébelo en un solo lugar y trabaje con él.
fuente
SVN en sí mismo es un buen comienzo y algunos de los otros carteles han ofrecido excelentes sugerencias sobre las mejores prácticas.
Lo único que agregaría es que debería conectar SVN con CruiseControl o TeamCity para impulsar un proceso de integración continua. Esto enviará correos electrónicos de compilación y permitirá que todos sepan cuándo alguien rompió la compilación.
Será muy revelador desde el principio quién está siguiendo su proceso y quién no. Puede generar cierta fricción, pero su equipo estará mejor a largo plazo.
fuente
Comentario preciso para cada compromiso
¡No rompa la construcción (principal)!
Comprometerse tan pronto como cambie una unidad lógica
Evite usar Subversion como herramienta de respaldo
Un poco de ramificación / fusión como sea posible
.
Se pueden encontrar más detalles en las mejores prácticas de SVN .
fuente
¿Trabajar DEV en sucursales?
Tronco comunitario
Recuerde que cuanto más incrementales, modulares, discretos y concisos haga sus confirmaciones, más fácil será para usted (o probablemente para otros):
fuente
Use esto para la plantilla de comentarios:
[tarea / historia xxx] [menor / mayor] [comentario] [comentario de seguimiento] [URL del error]
fuente