fluxo de trabalho da equipe do github - bifurcar ou não?

21

Somos uma pequena equipe de desenvolvedores da Web atualmente usando o subversion, mas em breve estamos mudando para o github.

Estou analisando diferentes tipos de fluxos de trabalho do github e não temos certeza se todo o conceito de bifurcação no github para cada desenvolvedor é uma boa idéia para nós.

Se usarmos garfos, entendo que cada desenvolvedor terá seus próprios repositórios remotos e locais privados. Estou preocupado que isso torne difícil empurrar os conjuntos de alterações e muito complexos. Além disso, minha maior preocupação é que ele forçará cada desenvolvedor a ter 2 controles remotos: origin (que é o fork remoto) e um upstream (que é usado para "sincronizar" as alterações do repositório principal). Não tenho certeza se é uma maneira tão fácil de fazer as coisas.

Isso é semelhante ao fluxo de trabalho explicado aqui: https://github.com/usm-data-analysis/usm-data-analysis.github.com/wiki/Git-workflow

Se não usarmos garfos, provavelmente podemos nos dar bem usando um repositório central, criando um ramo para cada tarefa em que estamos trabalhando e mesclando-os no ramo de desenvolvimento no mesmo repositório. Isso significa que não poderemos restringir a mesclagem de ramificações e pode ser um pouco confuso ter muitas ramificações no repositório central.

Alguma sugestão de equipes que tentaram os dois fluxos de trabalho?

aporat
fonte
3
bifurcar ou não bifurcar
Lukasz Madon

Respostas:

9

Acho que seu medo de bifurcar-se vem da fusão menos do que estelar da SVN - porque não é a bifurcação que causa o problema - é a fusão.

Mergulhe - você descobrirá que é realmente ótimo! Você não precisa sobrecarregar (não garfo para todas as alterações em todos os arquivos), mas pode garfo para recursos e entrar novamente.

Pense no GitHub como várias versões dignas de aprimoramento em muitos dos conceitos principais no controle de origem.

O conceito de uma ramificação "estável" e uma bifurcação de "desenvolvimento ativo" também abrangem muitos desses problemas, se você hesitar em fazer bifurcação. : P

jefflunt
fonte
19
Se você substituir todas as instâncias de "fork" por "branch", eu concordo. No entanto, a pergunta era sobre bifurcar e lidar com dois (ou mais) repositórios remotos.
David Harkness
8

Tentamos ambos, com desenvolvedores que estão muito à vontade no svn. E se você é um grupo de desenvolvedores que já trabalham juntos e confiam uns nos outros com direitos de confirmação, provavelmente achará mais fácil manter um repositório único e central no git e adicionar todos vocês como colaboradores desse repositório.

Ocasionalmente ainda fazemos garfos particulares, mas isso geralmente é para mudanças exóticas ou testes individuais, nos quais o resto normalmente não está interessado, mas que desejamos armazenar remotamente de qualquer maneira.

Eu começaria com um único repositório central e apenas trabalharia com o git por um tempo. Talvez o garfo particular cresça em você, talvez não. Qualquer um serve.

Pål Brattberg
fonte
6

No git, um garfo é realmente apenas outro ramo. Com o fluxo de trabalho de bifurcação para cada desenvolvedor, você efetivamente exige que cada desenvolvedor tenha uma ramificação pública (remota) para rastrear suas alterações de desenvolvimento. Isso é útil para poder colaborar diretamente (ponto a ponto) entre desenvolvedores. Você terá que mesclar as alterações de cada desenvolvedor no repositório central de qualquer forma, então não acho que haja muita sobrecarga adicionada por isso.

Troelskn
fonte
3

Para uma pequena equipe de 2 a 3 desenvolvedores, não há problema em usar ramificações no repositório para gerenciar correções e recursos. O problema é quando você tem mais desenvolvedores do que isso e mais recursos e correções que estão sendo desenvolvidos.

Quando esse for o caso, seu principal repositório no Github terá centenas de ramos; alguns serão velhos, esquecidos e imersos.

Você também terá problemas com a colaboração em que alguém está forçando uma ramificação compartilhada que está no repositório. Isso significa que ninguém pode colaborar adequadamente nesse ramo, pois um empurrão é uma reescrita da história.

A bifurcação de um repositório facilita o rastreamento de quais ramificações estão em andamento e quais são úteis. Mantém o repositório principal mais limpo.

No entanto, sua infraestrutura de teste pode estar usando o repositório principal, por isso pode ser mais difícil testar alterações no repositório bifurcado, a menos que você tenha enviado a ramificação para o upstream. Pode ser complicado descobrir quando a ramificação e a bifurcação são melhores, mas em geral, quando a equipe tem mais de 4 pessoas e há muitas correções e recursos, a bifurcação é a melhor opção.

Rudolf Olah
fonte