Eu trabalhei com ambas as técnicas e diria que desenvolver no tronco e ramificar pontos estáveis como lançamentos é o melhor caminho a percorrer.
As pessoas acima que se opõem a dizer que você terá:
- Problemas constantes de compilação para compilações diárias
- Perda de produtividade quando um desenvolvedor comete um problema para todas as outras pessoas no projeto
provavelmente não utilizaram técnicas de integração contínua.
É verdade que, se você não realizar várias compilações de teste durante o dia, digamos que uma vez a cada hora, elas se abrirão para esses problemas que estrangularão rapidamente o ritmo do desenvolvimento.
A realização de várias compilações de teste durante o dia desdobra rapidamente as atualizações da base de código principal, para que outras pessoas possam usá-la e também o alerta durante o dia, se alguém quebrou a compilação para que possa corrigi-la antes de voltar para casa.
Como apontado, apenas descobrir sobre uma compilação quebrada quando a compilação noturna para executar os testes de regressão falha é pura tolice e desacelera rapidamente as coisas.
Leia o artigo de Martin Fowler sobre integração contínua . Rolamos nosso próprio sistema para um grande projeto (3.000kSLOC) em cerca de 2.000 linhas de Posix sh.