As ramificações de liberação devem ser mescladas para dominar

9

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?


fonte
2
A estratégia de ramificação usada depende inteiramente do fluxo de trabalho da sua organização e dos requisitos específicos.
Robert Harvey
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ígido
k3b
1
cherry pickingcada comprometer na liberação ramo em mestre ou merging liberação para mestre é tecnicamente a mesma coisa aceitar que você não "ver" o cherry picksna história git. Então, eu prefiro mergingcada correção no master usando a --no-ffopção gits, para que o histórico mostre o ramo de lançamento extra.
Timothy Truckle
que quer dizer isto: bitsnbites.eu/a-stable-mainline-branching-model-for-git ele explicitamente nunca diz para mesclar os ramos de libertação de volta
Ewan
Obrigado pelo feedback a todos. @ Ewan Sim, mas também li algumas documentações gerais do Git escritas pela Microsoft e parecia que elas nunca mesclaram todo o ramo de lançamento para dominar.

Respostas:

6

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.

Newtopian
fonte
Isso implica que a ramificação é perdida após a mesclagem, o que não é um caso. A ramificação de liberação também deve ser mesclada no mestre no modo LTS. Não há razão para não mesclar ramificações de liberação.
Basilevs
1
Não se trata de ramificações perdidas, mas mais de forçar alguém a pensar, mesclar sistematicamente as ramificações LTS os faria mesclar duplicatas para todas as ramificações LTS ativas. Uma correção de bug precisa ser mesclada apenas uma vez para a principal e provavelmente não de uma ramificação do LTS, pois a versão mais recente provavelmente ainda não estaria no LTS e estaria mais próxima do estado da ramificação principal. Nesse cenário, seria possível escolher a partir da versão mais recente, os próprios ramos LTS quase nunca seriam enviados ao mestre. Que a ramificação seja perdida ou não após uma mesclagem é irrelevante.
Newtopian
Por que alguém prefere duplicar palhetas inseguras para garantir a duplicação de mesclagem segura? Por "seguro", quero dizer rastreamento e propagação de alterações criptograficamente protegidas.
Basilevs
Abordagem semelhante funciona sem opções, aplicando a correção na ramificação mais antiga e mesclando da mais antiga para a mais recente. Se é possível evitar picaretas de cereja, por que usá-las? I parecem não entender alguma coisa no modelo Mainline estável ...
Basilevs