Fluxo de trabalho Git para pequenas equipes


11

Estou trabalhando em um fluxo de trabalho git para implementar em uma equipe pequena. As idéias principais do fluxo de trabalho:

  • Há um mestre de projeto compartilhado no qual todos os membros da equipe podem gravar
  • Todo o desenvolvimento é feito exclusivamente em ramos de recursos
  • As ramificações dos recursos são revisadas por um membro da equipe que não seja o autor da ramificação
  • A ramificação do recurso é eventualmente mesclada no mestre compartilhado e o ciclo recomeça.

O artigo explica as etapas deste ciclo em detalhes:

https://github.com/janosgyerik/git-workflows-book/blob/small-team-workflow/chapter05.md

Isso faz sentido ou estou faltando alguma coisa?

Respostas:


16

Eu gosto do modelo de ramificação git flow . A ramificação principal é deixada sozinha na maioria das vezes, contém apenas liberações. O ramo de desenvolvimento deve estar estável o tempo todo, e os ramos do recurso podem ser interrompidos.

Você também pode combinar isso com a integração contínua , mesclando develop em seu ramo de recursos e seu ramo de recursos em desenvolvimento. É claro que você só deve mesclar algo em desenvolvimento quando tiver certeza de que as coisas estão funcionando e não quebram.


Pelo que entendi, o fluxo de Git e a integração contínua são formas alternativas de trabalho e não podem realmente ser combinadas. No fluxo git, o código é mesclado no desenvolvimento somente quando um recurso é concluído. Na integração contínua, todo o código é mesclado em uma ramificação compartilhada pelo menos uma vez por dia, mesmo que não forneça nenhum novo recurso imediatamente.
Bdsl

7

Acho que está faltando o tópico Integração Contínua. Deve fazer parte de todas as configurações de desenvolvimento.

Com ramificações de recursos, você tem o problema de não integrar continuamente, mas somente após a conclusão de um recurso.

Se o recurso ramificado tiver vida curta, isso pode ser aceitável, mas é definitivamente algo que se deve considerar.

Outra alternativa é configurar as compilações de IC para cada ramificação de recurso. Isso com certeza ajuda, mas não é integração. Isso se torna óbvio quando você encontra seu primeiro bug que não aparece no Recurso A nem no Recurso B, mas no momento em que você integra o Recurso A&B

Uma terceira alternativa é tornar a mesclagem em alguma ramificação de integração parte da construção do IC. Essa é uma verdadeira integração e, na verdade, funciona razoavelmente bem com o git se o trabalho for um pouco separado, mas causa conflitos de mesclagem durante a compilação, resultando em compilações com falha.


A ramificação principal pode ser conectada a um IC para rejeitar mesclagens de ramificação de recurso se elas falharem nos testes de não regressão automatizados. Obrigado pela dica, vou adicionar uma seção "Dicas" no final e mencionar isso lá.
Janos

1
Claro, mas como disse, isso não é contínuo-integração, mas at-a-end-of-a-recurso de integração que pode ser bom enoug, mas não é o mesmo
Jens Schauder

1
Eu acho que os ramos de recursos são muito úteis, porque eles não precisam ser estáveis. Isso significa que você pode confirmar com frequência, em vez de ter um enorme envio.
Arjan

Um processo de criação automatizado que é executado em uma programação (sistema de IC) é indispensável. Ele precisa ser executado com frequência para que os problemas de compilação possam ser encontrados e corrigidos rapidamente. As equipes de desenvolvimento devem dar às falhas de construção a maior prioridade. É muito mais fácil corrigir esses tipos de problemas quando eles aparecem pela primeira vez.
Nathan Pilling

1
Para nossos projetos que usam IC (temos alguns projetos herdados que não podem usá-lo no momento), comprometemos TUDO a dominar o verdadeiro IC, para nossos projetos herdados usamos o modelo de ramificação git flow. As ramificações de recursos são um bloqueador de IC, se você me perguntar, elas dificultam a integração CONTINUAMENTE (não apenas quando termina). Continuamos trabalhando nos recursos e a tarefa final é ativá-lo basicamente, mas o código está sempre no projeto.
Elliot Blackburn

1

Você pode se inspirar no gitflow ou no Twgit .

O gitflow resume sua abordagem como:

Extensões Git para fornecer operações de repositório de alto nível para o modelo de ramificação de Vincent Driessen.

Twgit se descreve da seguinte maneira:

O Twgit é uma ferramenta gratuita e de código aberto para gerenciar recursos, hotfixes e versões nos repositórios Git. Ele fornece comandos simples e de alto nível para adotar o modelo de ramificação descrito em nossa documentação. SO suportado: Debian / Ubuntu Linux, Mac OS X.

Ambas as ferramentas estão disponíveis no github .

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.