Encontrar errores en las copys de trabajo de revisión mixta de Subversion

El proyecto en el que trabajo ha cambiado recientemente de un sistema de control de revisiones horriblemente anticuado a Subversion. Me sentí como si tuviera una bastante buena comprensión de Subversion hace unos años, pero una vez que aprendí sobre Mercurial, me olvidé de Subversion rápidamente.

Mi pregunta está dirigida a aquellos que trabajan con un número considerable de desarrolladores (15+) en la misma sucursal en Subversion.

Digamos que pagas rev N del repository. Haces algunos cambios y luego te comprometes. Mientras tanto, otros desarrolladores han realizado cambios en otros files. Escucha sobre otros cambios de desarrolladores en el subsistema X y decide que los necesita de inmediato. No desea actualizar toda la copy de trabajo porque extraería todo tipo de cosas y luego tendría que hacer una compilation larga (proyecto C ++). El riesgo que veo es que el desarrollador actualiza solo el subsistema X sin darse count de que el nuevo código depende de un cambio reciente en el subsistema Y. El código se comstack, pero se bloquea en el time de ejecución.

Como tratas con esto?

  • ¿El desarrollador informa lo que cree que podría ser un error (a pesar de que no es un error)?
  • ¿Requiere que los desarrolladores actualicen su copy de trabajo completa antes de informar un error? ¿Esto no disuadiría los informes de errores?
  • ¿Previenen que ocurra esta situación a través de algún mecanismo que no haya pensado?

Como usted comprometió todo su trabajo en progreso, no tiene ninguna razón para no actualizar su copy con la última revisión completa. La compilation larga es parte del precio de un proyecto grande. El time de compilation es casi siempre menor que el time dedicado a tratar de determinar si tiene un error, o si hay alguna incompatibilidad oscura porque no verificó todo.

Ese proyecto había distribuido comstackciones a todas las estaciones de trabajo del grupo. Como teníamos aproximadamente 15 computadoras para la tarea, eso significaba que lo que normalmente sería una construcción de 6 horas o así, tomó alnetworkingedor de 25 minutos.

La responsabilidad de realizar un seguimiento de las dependencies es del desarrollador que la introduce. En este caso, el desarrollador X debe asegurarse de que el cambio funcione con la versión actual de otros subsistemas. O al less documentar con qué versiones trabaja.

Las forms en que he visto ayudar a los desarrolladores a lidiar con esto son.

  1. Incluya la comprobación de dependencia en el sistema de compilation. Muchos proyectos de código abierto lo hacen en un script .configure.
  2. Configure el sistema de control de versiones para que lo haga por usted. No sé hacer esto en subversión.

Esto obviamente no es una cura para largos times de compilation, pero ayuda a evitar reconstrucciones innecesarias. Los charts de dependencies complejas también son una indicación de un layout cuestionable. Puede ser una buena idea refactorizar el código para networkingucir el acoplamiento entre subsistemas.