Você usa esse ou um fluxo de trabalho de ramificação git semelhante?
Usamos um fluxo de trabalho semelhante no trabalho, mas um pouco menos complicado. No entanto, ele é bastante inspirado por esse fluxo de trabalho, já que li este artigo várias vezes. Até tenho o pdf do modelo de ramificação impresso em cores ao lado da minha mesa :)
Você considera isso uma abordagem produtiva?
Produtivo. Como você define produtividade? Bem, na minha opinião, é mais importante ter alta qualidade, pelo menos tentar obter melhor qualidade o tempo todo. Melhorando constantemente o processo etc. Se você pode produzir um código de qualidade, a produtividade se beneficiará dele. Portanto, a questão é realmente: isso melhora a qualidade do software? E minha resposta para isso é definitivamente sim.
O que eu mais amo com esse tipo de modelo de ramificação é que ele introduz ramificações em diferentes camadas de qualidade. Quanto mais à direita na imagem, maior estabilidade e maior qualidade. O ramo principal é sagrado e todas as confirmações nele devem ser consideradas versões estáveis do software. Quanto mais à esquerda você for, mais experimental e menor será a estabilidade.
Assim que você testar novos recursos e correções, poderá transferi-los gradualmente da esquerda para a direita e, assim, mover o código com alta qualidade exatamente quando você souber que o código atende aos requisitos de qualidade exigidos pelo código. Bem, pelo menos em teoria, já que você não pode testar tudo a 100% e sabe com certeza que o código não contém nenhum erro, porque ele sempre terá erros. Mas permite manter uma alta confiança.
Nada é mais péssimo como programador do que trabalhar em um sistema em que ninguém confia no código, porque eles sabem que isso é péssimo e que há uma merda de bugs nele.
Você vê alguma falha nessa abordagem? Alguma desvantagem em potencial?
É importante pensar em seu modelo de ramificação para que ele se adapte bem às necessidades da sua organização. Só porque esse modelo funciona bem para algumas pessoas, não significa necessariamente que seja ideal ou desejável para outra.
Sempre existem trade-offs e até nesse caso. Uma troca é o número de ramificações versus complexidade. Ao introduzir muitos tipos diferentes de ramificações, você aumenta a complexidade do fluxo de trabalho. Por exemplo, pode ser errado sempre forçar as pessoas a criar um novo ramo de recursos, quando estão tentando corrigir um bug simples, alterando algumas linhas de código.
Todos sabemos que os bugs são mais ou menos complicados de resolver. Portanto, quando um bug trivial é descoberto, você pode reduzir a complexidade e a administração para se livrar da sobrecarga extra e deixar as pessoas se comprometerem diretamente com, por exemplo, o mestre ou o ramo de desenvolvimento. Mas, como a natureza de suas correções se torna mais complicada, vale a pena extra para criar novas ramificações para elas. Especialmente se você não tiver certeza do tamanho e comprimento ou se deseja melhorar a colaboração entre você e os outros desenvolvedores.
Se você tem uma abordagem melhor, você se importaria em compartilhar ou fornecer um link para um artigo ou discussão sobre isso?
Essa é, sem dúvida, uma boa abordagem e pode ser adequada à maioria dos casos, já que a maioria de nós possui processos de desenvolvimento semelhantes, mas pode não ser adequada para todos. Peço fortemente que você pense como você lida com seu código agora e tente criar um modelo de ramificação que se encaixe no que você já possui.
O ponto mais importante é começar com o git e o resto seguirá naturalmente. Comece simples e melhore gradualmente! Seja criativo!
Felicidades