He trabajado con ambas técnicas y diría que el mejor camino es desarrollar en el tronco y ramificar puntos estables como lanzamientos.
Esas personas de arriba que se oponen diciendo que tendrás:
- Problemas de compilación constantes para compilaciones diarias
- Pérdida de productividad cuando un desarrollador comete un problema para todas las demás personas en el proyecto
Probablemente no haya utilizado técnicas de integración continua.
Es cierto que si no realiza varias compilaciones de prueba durante el día, por ejemplo, una vez cada hora más o menos, se dejará abierto a estos problemas que rápidamente estrangularán el ritmo de desarrollo.
Al hacer varias compilaciones de prueba durante el día, las actualizaciones de la base del código principal se pliegan rápidamente para que otros puedan usarlo y también le avisa durante el día si alguien ha roto la compilación para que puedan arreglarlo antes de irse a casa.
Como se señaló, solo descubrir una compilación rota cuando falla la compilación nocturna para ejecutar las pruebas de regresión es una locura y ralentizará las cosas rápidamente.
Lea el artículo de Martin Fowler sobre Integración continua . Desarrollamos nuestro propio sistema para un proyecto importante (3,000kSLOC) en aproximadamente 2,000 líneas de Posix sh.