Ramificação Git para equipes ágeis

Usar o Git possibilita um novo nível de agilidade para as equipes de software – aqui está o motivo

Sarah Goff-Dupont Sarah Goff-Dupont
Buscar tópicos

Livres de congelamentos de códigos não muito bem feitos e megafusões massivas que contaminam o controle de versão centralizado, os desenvolvedores podem isolar o trabalho em andamento e criar em fatias verticais estreitas com facilidade. Ramificação e mesclagem são tão fáceis com Git que muitas equipes estão fazendo novas ramificações para cada história de usuário ou correção de erros que implementam. Este modelo está se tornando rapidamente o novo padrão ouro para equipes ágeis – e por uma boa razão!

Pegue uma pipoca e se sente para ver um dos webinars mais populares que a gente oferece. Você vai aprender:

  • Como um modelo de ramificação por problema ajuda as equipes a entregar o código de trabalho em um fluxo contínuo
  • Como o fluxo de trabalho é para os desenvolvedores
  • Como ele se integra à sua integração contínua existente e às práticas de revisão de código
  • Prós e contras básicos a considerar ao avaliar este modelo

Assista e aprenda

P & R

Ótimo material, não?

Agora, se for como eu, você quase nunca vê a parte de perguntas e respostas de um webinar. Tudo bem, pode admitir. Por isso, transcrevi algumas perguntas para você ler conforme for conveniente.

P: Como vocês lidam com números de versão em todas essas ramificações? Como diferenciam essas linhas de código?

R: As equipes normalmente nomeiam a ramificação de acordo com a versão correspondente. Por exemplo, quando a equipe que faz o Stash estava preparando a versão 2.9, eles criaram uma ramificação estável chamada 'stash-2.9', então quando eles analisam o repositório, fica muito claro qual ramificação é essa. Você pode usar qualquer convenção de nomenclatura para sua equipe – apenas inclua o número de versão em algum lugar.

P: Em seus exemplos, você tinha uma pessoa trabalhando em cada ramificação. Qual é a estrutura de ramificação e a convenção de nomenclatura corretas para quando duas pessoas estão trabalhando em uma história?

R: É possível ter duas pessoas trabalhando na mesma ramificação. Apenas certifique-se de seguir a etiqueta básica da ramificação compartilhada, por exemplo, não trocar de base, e, normalmente, evitar execuções na cópia local da ramificação, o que causará problemas para a outra pessoa. Outra opção é solicitar que cada colaborador crie sua própria ramificação para o problema e mesclem todas com frequência. A convenção de nomenclatura para isso pode ser -- (por exemplo., sarah-DEV-1234-company-name-misspelled-on-homepage), que é mais ou menos o mesmo que usamos para ramificações de um único desenvolvedor.

P: Como você lida com as dependências se não está mesclando todas as alterações em uma única ramificação assim que ela é feita em uma ramificação de desenvolvimento?

R: Se as partes dependentes estão em andamento, então os desenvolvedores que estão trabalhando em cada parte do código devem mesclar as alterações frequentemente. E é possível fazer isso no Git sem precisar mesclar a ramificação em uma ramificação centralizada em primeiro lugar – você e o outro desenvolvedor só podem mesclar suas ramificações diretamente. A outra opção é usar a ramificação de integração compartilhada sobre a qual falamos hoje.

P: Há algum tempo, Martin Fowler argumentou contra a ramificação de recursos, dizendo que isso impede a refatoração e que enquanto a ramificação de recurso está ativa, você faz uma criação contínua e não uma integração contínua.

R: Sim, já li a publicação que ele fez sobre esse assunto. Foi há bastante tempo – talvez 2008 ou 2009. Acho que as oportunidades para execução de IC em ramificações de recursos avançaram muito desde então. E como eu disse na parte de "considerações" desse webinar, uma abordagem de ramificação por item significa que você não está fazendo IC pura. Você está fazendo criação e testes contínuos, mas não integração contínua. Você pode chegar perto de ter IC pura, no entanto, apenas ao incluir uma ramificação de integração compartilhada no esquema de ramificação.