Obstáculos ao uso do Git Flow no Subversion

10

Minha equipe no trabalho está iniciando um novo projeto, usando o Subversion como nosso VCS (você pode considerar isso definido para o propósito desta pergunta). Ainda estamos nos estágios iniciais do projeto e estamos tentando concordar com um modelo de ramificação. Nosso projeto anterior foi baseado em um modelo de versão não-padrão que causava problemas ao gerenciar hot-fixes e patches para liberações existentes.

Eu achei diferentes modelos de ramificação bastante complicados, mas um modelo que eu entendo claramente é o fluxo git . Estou curioso para saber como seria difícil / indesejável implementar uma variação disso no Subversion. Obviamente, haveria alguma diferença em termos de pessoas colaborando em filiais. Os ramos de recursos teriam que ser centralizados e não limitados a repositórios locais, mas os outros conceitos do modelo devem ser reproduzíveis no Subversion como eu o entendo.

Quais seriam as desvantagens ou desafios dessa abordagem. O que ouvi é que no SVN "mesclar é caro" em relação ao Git. Mas não estou completamente claro sobre o que isso significa na prática ou como isso afetaria nossa capacidade de usar um fluxo git como o modelo de ramificação.

Quais seriam as maiores preocupações com essa abordagem. Existe uma abordagem igualmente clara que é mais natural no Subversion?

Ben McCormick
fonte

Respostas:

12

O Gitflow é baseado nas melhores práticas de versionamento e ramificação do código fonte. Um artigo muito bom sobre isso é Estratégias avançadas de ramificação do SCM

O argumento de Vance no artigo vinculado é que diferentes ramos têm papéis diferentes . Ele identifica os papéis de:

  1. Linha principal (todas as filiais daqui)
  2. Desenvolvimento (onde o trabalho de desenvolvimento é realizado)
  3. Manutenção (onde o trabalho de manutenção é realizado)
  4. Acumulação (Reunindo coisas em preparação para a liberação)
  5. Empacotamento (empacotando a compilação para o release)

No gitflow, são eles:

  1. desenvolve
  2. ramos de recursos
  3. Ramos de hotfix
  4. Liberar ramificações
  5. mestre

O artigo sobre ramificação foi escrito com o Perforce em mente. O Perforce é um VCS centralizado, assim como o svn. Os padrões de ramificação que ele descreve perfeitamente são mapeados para svn.

A chave para entender é que não é como o gitflow é portado para o svn, mas como aplicar os mesmos conceitos fundamentais de ramificação e os papéis das ramificações em diferentes estruturas de VCS.

Eu recomendo fortemente a leitura do artigo, não posso dar muito crédito a ele. A maneira como as coisas são descritas é baseada em uma filosofia de construção de tronco / linha principal para a qual você achará fácil mapear o svn.


fonte
1
Voltando às idéias que lideram o design do gitflow, é um aprimoramento inteligente da pergunta original!
user40989
@ user40989 Não tenho certeza se Vincent Driessen (nvie) leu o artigo ou não que apresentou esse conceito de ramificação, ou se ele o redescobriu por conta própria. De qualquer forma, o reconhecimento de quais são as funções necessárias para um fluxo de trabalho através do controle de versão facilita a visualização das semelhanças entre as abordagens e as melhores práticas.