Nós usamos:
- ramo de desenvolvimento exclusivamente
até que o projeto esteja quase completo, ou estamos criando uma versão importante (por exemplo, demonstração do produto, versão de apresentação), então (regularmente) ramificamos nossa ramificação de desenvolvimento atual para:
Nenhum novo recurso entra no ramo de lançamento. Somente bugs importantes são corrigidos na ramificação de lançamento e o código para corrigi-los é reintegrado à ramificação de desenvolvimento.
O processo de duas partes com um ramo de desenvolvimento e estável (release) facilita muito a vida para nós, e não acredito que possamos melhorar qualquer parte dele, introduzindo mais ramos. Cada ramificação também possui seu próprio processo de compilação, o que significa que, a cada dois minutos, um novo processo de compilação é gerado; portanto, após um check-in de código, temos um novo executável de todas as versões e ramificações de compilação em cerca de meia hora.
Ocasionalmente, também temos filiais para um único desenvolvedor trabalhando em uma tecnologia nova e não comprovada ou criando uma prova de conceito. Mas geralmente isso é feito apenas se as alterações afetarem muitas partes da base de código. Isso acontece, em média, a cada 3-4 meses e esse ramo geralmente é reintegrado (ou descartado) dentro de um mês ou dois.
Geralmente eu não gosto da idéia de todo desenvolvedor trabalhar em seu próprio ramo, porque você "pula e vai diretamente para o inferno da integração". Eu recomendaria fortemente contra isso. Se você tem uma base de código comum, todos devem trabalhar juntos. Isso torna os desenvolvedores mais cautelosos em relação aos seus check-ins e, com a experiência, todo codificador sabe quais alterações estão potencialmente quebrando a compilação e, portanto, os testes são mais rigorosos nesses casos.
Na pergunta inicial do check-in:
Se você precisar fazer check-in apenas de CÓDIGO PERFEITO , na verdade nada deverá ser feito check-in. Nenhum código é perfeito e, para o controle de qualidade verificar e testá-lo, ele precisa estar no ramo de desenvolvimento para que um novo executável possa ser construído.
Para nós, isso significa que, uma vez que um recurso é concluído e testado pelo desenvolvedor, é feito o check-in. Pode até ser verificado se houver erros conhecidos (não fatais), mas, nesse caso, as pessoas que seriam afetadas pelo bug serão geralmente informado. O código incompleto e em andamento também pode ser verificado, mas apenas se não causar efeitos negativos óbvios, como falhas ou interrupção da funcionalidade existente.
De vez em quando, um inevitável código combinado e verificação de dados tornarão o programa inutilizável até que o novo código seja criado. O mínimo que fazemos é adicionar uma "Aguardar construção" no comentário do check-in e / ou enviar um e-mail.