Se trabalharmos apenas com um ramo no Subversion, deveríamos nos preocupar? Não podemos simplesmente trabalhar no porta-malas para acelerar as coisas?
É assim que desenvolvemos com o Subversion:
- Há um tronco
- Criamos um novo ramo de desenvolvimento
- Desenvolvemos um novo recurso nesse ramo
- Quando o recurso é concluído, ele é mesclado no tronco, a ramificação é removida e uma nova ramificação de desenvolvimento é feita a partir do tronco.
Quando queremos liberar para produção, fazemos uma etiqueta a partir do tronco. As correções são feitas em uma ramificação a partir dessa tag. Esse bugfix é então mesclado no tronco.
É por isso que criamos um novo ramo de desenvolvimento após a conclusão de um recurso. Dessa forma, a correção de bug será incluída em breve em nosso novo código.
Abaixo está um diagrama que deve esclarecer:
Agora, há um sentimento de que essa não é a maneira mais eficiente de trabalhar. Construímos localmente antes de confirmar, o que leva de 5 a 10 minutos. Você pode entender que isso é um tempo de espera bastante longo.
A idéia de um ramo de desenvolvimento é que o tronco esteja sempre pronto para lançamento. Mas isso não é mais verdade em nossa situação. Às vezes, um recurso está quase pronto e alguns desenvolvedores já começam a codificar o próximo recurso (caso contrário, eles esperariam que um ou dois desenvolvedores terminassem e se fundissem).
Então, quando o recurso 1 é concluído, ele é mesclado no tronco, mas com algumas confirmações do recurso 2 incluídas.
Então, devemos nos preocupar com o ramo de desenvolvimento, pois só temos um ramo? Eu tenho lido sobre desenvolvimento baseado em tronco e ramificação por abstração, mas a maioria dos artigos que encontrei focam na parte ramificação por abstração. Tenho a impressão de grandes mudanças que durarão vários lançamentos. Este não é um problema que estamos tendo.
O que você acha? Podemos apenas trabalhar no porta-malas? O pior cenário é (acho) que teríamos que fazer uma tag do tronco e escolher os commits necessários, porque alguns commits / recursos ainda não estão prontos para produção.