Minha equipe está usando o modelo de ramificação Git Stable Mainline e estamos prestes a criar a primeira ramificação de lançamento. Pelo que li até agora, parece que as ramificações de liberação são colocadas em silos a partir da ramificação principal e nunca são completamente mescladas novamente à master. Em vez disso, se uma correção for feita na ramificação de liberação, ela geralmente será escolhida novamente para a ramificação principal. Isso faz sentido para mim, pois você deseja manter a versão atual completamente separada do desenvolvimento da próxima versão, enquanto ainda é capaz de desenvolver o próximo conjunto de recursos no master ao mesmo tempo em que prepara a versão atual.
Por quanto tempo essas ramificações de liberação devem ser mantidas por aí? Existem casos em que eles devem ser completamente mesclados de volta ao master?
How long should these release branches be kept around for?
Contanto que você espere receber uma mensagem de erro para essa versão que deseja reproduzir a partir do código-fonte. Eu não removeria nenhuma ramificação de liberação porque uma ramificação tem uma pequena área de kilobyte no servidor. somente o delta custa memória do disco rígidocherry picking
cada comprometer na liberação ramo em mestre oumerging
liberação para mestre é tecnicamente a mesma coisa aceitar que você não "ver" ocherry picks
na história git. Então, eu prefiromerging
cada correção no master usando a--no-ff
opção gits, para que o histórico mostre o ramo de lançamento extra.Respostas:
Por quanto tempo esses galhos devem permanecer?
A primeira resposta que me vem à mente aqui é:
Por que você está criando uma ramificação de lançamento em primeiro lugar?
Se você pretende fornecer suporte a uma versão em uso de produção, ela deve durar enquanto ela durar com seus clientes. (digamos suporte LTS, você pode ter várias ramificações, tornando as coisas um pouco mais complexas)
Se você estiver separando o trabalho de estabilização do novo desenvolvimento em andamento, depois que a versão for implantada, você não precisará mais dessa ramificação. Aqui, isso sugere um pipeline de entrega contínua. Qualquer bug obtém sua correção no próximo lançamento, o que ocorreria com a maior frequência possível. Alguns consideram isso o ramo principal como o ramo estável implantado várias vezes ao dia. Outros irão sincronizar com seus sprints e liberar a cada duas a três semanas.
Você deve mesclá-lo completamente de volta ao master?
Como você acha que tudo depende de por que você adotou essa estratégia de ramificação. para o estilo de entrega contínua, como a ramificação nunca será usada novamente, você deve tratá-la da mesma forma que faria com qualquer ramificação de recurso ou correção de bugs, provavelmente você a mesclaria de volta ao mestre e a esquecerá.
Se, no entanto, você está buscando o estilo LTS, provavelmente não o mesclará novamente, especialmente se você tiver vários desses ramos. Aqui você aplicaria a correção a todas as ramificações de liberação e a seleção de cereja de uma delas para mesclar essa correção novamente no mestre. Nesse cenário, a última coisa que você gostaria de fazer é tratá-lo como qualquer outro ramo de recurso em que as alterações do mestre sejam inseridas nele e os conflitos resolvidos lá, e não no mestre.
Sem saber mais sobre o ciclo de vida do seu produto e o fluxo de trabalho da sua equipe, é difícil obter conselhos mais precisos aqui.
fonte