Buscar tópicos
Buscar tópicos

O que é uma estratégia de ramificação?

Desbloqueie o poder da ramificação no controle de versões para simplificar a colaboração, melhorar a estabilidade do código e facilitar o processo de mesclagem.

Comece a usar grátis o template de DevOps

Desenvolva, implante e gerencie aplicativos com uma abordagem de ferramentas abertas neste template personalizável.

Key Takeaways

  • A branching strategy defines how developers organize, write, and merge code in version control systems to streamline collaboration and maintain stability.

  • Common strategies include release branching, feature branching, and task branching, each supporting different workflows.

  • Effective branching reduces merge conflicts, supports parallel development, and enables continuous integration.

  • Establish a clear branching strategy to optimize team collaboration and ensure reliable, high-quality code releases.

Quase todos os sistemas de controle de versão atuais são compatíveis com ramificações, sejam quais forem as linhas de trabalho que resultam da base de código central.

Uma estratégia de ramificação consiste em diretrizes que ajudam os desenvolvedores a organizar, escrever, mesclar e implantar código usando um sistema de controle de versão. A ramificação principal, que costuma ser chamada de linha principal, padrão ou tronco, serve como base a partir da qual os desenvolvedores podem criar suas próprias ramificações e trabalhar com autonomia.

Compreender as várias estratégias de ramificação disponíveis é crucial para otimizar a colaboração e manter a qualidade do código em projetos de desenvolvimento de software.

Os benefícios de uma estratégia de ramificação

A ramificação permite que equipes de desenvolvedores colaborem com facilidade dentro de uma base de código central. Quando um desenvolvedor cria uma ramificação, o sistema de controle de versão cria uma cópia da base de código nesse ponto no tempo. As alterações na ramificação não afetam outros desenvolvedores da equipe. Esse é um lado bom, claro, porque funções em desenvolvimento podem criar instabilidade, e seria muito perturbador se todo o trabalho acontecesse na linha de código principal. Mas as ramificações não precisam viver em confinamento. Os desenvolvedores podem facilmente usar alterações de outros desenvolvedores para colaboração em funções e para garantir que a ramificação privada não se afaste muito da principal.

Dica profissional

As ramificações não são boas apenas para funções. As ramificações podem isolar a equipe de alterações arquitetônicas importantes, como atualização de estruturas, bibliotecas comuns etc.

Três estratégias de ramificação para equipes ágeis

Os modelos de ramificação muitas vezes diferem entre as equipes e são tema de muito debate na comunidade de software. Um grande tema é quanto trabalho deve permanecer em uma ramificação antes de executar a mescla de volta à ramificação principal. 

Ramificar liberações

A ramificação de lançamentos dá a ideia de que a versão inteira fica contida na ramificação. Ou seja: no final do ciclo de desenvolvimento, o gerente da versão vai criar uma ramificação a partir da principal (p. ex., "ramificação de desenvolvimento 1.1"). Todas as alterações na versão 1.1 precisam ser aplicadas duas vezes: uma vez na ramificação 1.1 e, em seguida, na linha de código principal. Lidar com duas ramificações é trabalho extra para a equipe. E é fácil esquecer de mesclar as duas ramificações. Ramificações de lançamento podem ser complicadas e difíceis de gerenciar, pois muitas pessoas trabalham na mesma ramificação. Todo mundo já teve que mesclar várias alterações diferentes em uma única ramificação. Se você precisar ramificar um lançamento, crie uma ramificação que seja a mais parecida possível com a versão atual. 

Aviso:

A ramificação de liberação é uma parte importante do suporte ao software com versão no mercado. Um único produto pode ter várias ramificações de liberação (por exemplo, 1.1, 1.2, 2.0) para apoiar o desenvolvimento sustentável. Não se esqueça de as alterações nas versões anteriores (ou seja, 1.1) podem precisar ser mescladas às ramificações de versões de liberação (ou seja, 1.2, 2.0). Confira o webinar abaixo para saber mais sobre como gerenciar ramificações de liberação com o Git.

Ramificação de funções

Ramificações de funções muitas vezes são associadas a sinalizadores de função —"alternâncias" que ativam ou desativam uma função do produto. Assim fica mais prático implantar o código na ramificação principal e controlar quando a função é ativada, o que facilita a implantação inicial do código bem antes de a função ser divulgada para os usuários finais.

Dica profissional

Outro benefício dos sinalizadores de função é que o código pode permanecer dentro do build, mas fica inativo enquanto estiver em desenvolvimento. Se algo der errado quando a função for ativada, um administrador do sistema pode reverter o sinalizador de função e retornar a um bom estado conhecido, em vez de precisar implantar um build novo.

Ramificação de tarefa

Na Atlassian, focamos em um fluxo de trabalho de ramificação por tarefa. Toda organização tem uma maneira natural de dividir o trabalho em tarefas individuais dentro de um rastreador de itens, como o Jira. Os itens passam a ser o ponto de contato central da equipe para esse trabalho. A ramificação de tarefas, também conhecida como ramificação de itens, conecta diretamente esses itens ao código-fonte. Cada item é implementado na própria ramificação, com a chave do item incluída no nome da ramificação. É fácil ver qual código implementa qual item: basta procurar a chave do item no nome da ramificação. Com esse nível de transparência, é mais fácil aplicar alterações específicas à ramificação principal ou a uma ramificação de lançamento legada mais antiga.

Como os centros ágeis estão centrados em histórias de usuários, as ramificações de tarefa complementam o desenvolvimento ágil. Cada história de usuário (ou atualização de segurança) fica dentro de sua própria ramificação, tornando mais fácil ver quais itens estão em andamento e quais estão prontos para lançamento.

What is Jira Video Thumbnail

Desafios da ramificação

Todos já tivemos o trabalho de integrar várias ramificações em uma solução sensata. Tradicionalmente, os sistemas de controle de versão centralizados, como o Subversion, tornaram a mesclagem uma operação muito difícil. Mas sistemas de controle de versão mais novos, como Git e Mercurial, adotam uma abordagem diferente para monitorar versões de arquivos em diferentes ramificações.

As ramificações tendem a durar pouco tempo. Por isso, são mais fáceis de mesclar e mais flexíveis em toda a base de código. Com a mesclagem frequente e automática de ramificações como parte da integração contínua (IC), além do fato de que ramificações de curta duração têm menos alterações, o "inferno da mesclagem" vira coisa do passado para as equipes que usam o Git e o Mercurial.

É isso que torna a ramificação de tarefas tão incrível!

Conclusão…

Um sistema de controle de versão só pode ir até aí em relação a afetar o resultado de uma mesclagem. Testes automatizados e integração contínua também são críticos. A maioria dos servidores de IC pode colocar novas ramificações sob teste automaticamente, reduzindo drasticamente o número de "surpresas" após a mesclagem final upstream e ajudando a manter a linha de código principal estável.

Recommended for you

Templates

Templates prontos do Jira

Confira nossa biblioteca de templates personalizados do Jira para várias equipes, departamentos e fluxos de trabalho.

Guia do produto

Uma introdução completa ao Jira

Use este guia detalhado para descobrir as principais funções e as melhores práticas para maximizar sua produtividade.

Guia do Git

Como entender o básico do Git

De iniciantes a especialistas avançados, use este guia para aprender o básico do Git com dicas e tutoriais úteis.