Usamos o GitHub Flow em nosso projeto e, na maioria das vezes, abrimos uma nova ramificação de recursos do master , fazemos alguns trabalhos lá, abrimos um PR, revisamos o código e voltamos ao master .
No entanto, meu trabalho atual depende de outro problema que está sendo trabalhado feature-branch-A
. É kosher criar minha ramificação a partir dessa outra ramificação ou é contra o espírito do GitHub Flow?
A alternativa seria basear minha ramificação no mestre e mesclar as alterações de feature-branch-A
(frequentemente).
Qual opção é preferida no fluxo do GitHub?
Eu acho que isso é completamente ok se você criar o recurso em outro recurso.
Mas não faça isso com bastante frequência. Vejo um desenvolvedor que fez isso e, uma ou duas semanas, jogou 10 RP por fusão. Isso foi completamente exaustivo para outros membros para revisão e difícil para mesclar também. Tente não fazer árvores no git. Isso ajuda na divisão para encontrar erros.
fonte
Uma coisa importante que o git-flow pretendia abordar foi a capacidade de raciocinar sobre o papel de um determinado ramo e o que ele ramifica e se funde.
Idealmente, todas as ramificações retornam à linha de código da qual foram mescladas. Isso normalmente é uma mesclagem da linha principal (no fluxo git, isso é
dev
). O recurso ramifica ramificação e mesclagem do dev, libera ramificação ramificação e mesclagem do dev (com uma mesclagem adicional paramaster
). Hot fixes ramificam e mesclam do master (com essa mesclagem adicional de volta ao dev).Cada linha de código se ramifica e se funde de volta ao pai. Uma linha de código pode extrair código de outras linhas de código a qualquer momento, se necessário.
Se o ramo de um ramo de recurso é um "Quero explorar essa maneira de corrigir um problema nesse ramo de recurso" - perfeitamente bem. Ramifica a partir da ramificação do recurso, confirma um pouco de código e mescla de volta à ramificação do recurso (ou é descartada).
O que você deseja evitar, no entanto, é algo parecido com:
A razão é que o começo e o fim não coincidem - torna um pouco mais difícil entender o que é e o que foi. Não é impossível, mas apenas leva um pouco mais de tempo para alguém entender seu papel.
No entanto, se esse é um novo recurso que depende do código que ainda não foi encontrado no dev, o fluxo deve ser:
Observe que isso começa com um ramo do dev e termina com uma mesclagem para o dev.
Tudo isso dito, provavelmente a melhor coisa a fazer é evitar a mesclagem de um recurso para outro. Ramifique o recurso, faça as preliminares necessárias ... e aguarde.
Isso fornece o conjunto mais estável de ramificações e código.
Algo a considerar em trabalhos futuros seria ter um recurso para publicar as interfaces necessárias para interoperabilidade com outros recursos - mesmo que o código de implementação não esteja completo. Isso seria mesclado ao dev, e o recurso necessário poderia funcionar com essas interfaces, assim como o recurso futuro. Isso provavelmente permitiria que o recurso futuro progredisse mais (codificando contra as interfaces, testando contra stubbs que implementam as interfaces) do que faria se tivesse que esperar pelo recurso necessário mesclar para dev.
fonte
required-feature
está imerso em.Uma ramificação de recurso é normalmente considerada menos estável que o tronco (desenvolvimento / mestre), portanto você pode se sujeitar a mais alterações subjacentes do que o normal se basear seu trabalho em uma.
Além disso, embora normalmente desaprovado se a ramificação foi empurrada, não é incomum refazer ramificações de recurso na ramificação pai, para obter um histórico melhor, mas isso seria mais complicado se houvesse ramificações adicionais pendentes, então você está essencialmente criando uma nova restrição para o proprietário da filial pai, além de possíveis dores de cabeça para você.
Dito isto, não há uma regra estrita contra isso. Afinal, são apenas padrões e práticas recomendadas.
Editar: perdeu parte da sua pergunta. A fusão do ramo de recursos com o seu, que é baseado no mestre, não evita realmente nenhum dos problemas mencionados acima e pode realmente criar uma história ainda mais complicada.
Portanto, se eu estivesse no seu lugar e pudesse adiar o trabalho até que o recurso a estivesse pronto, ou fazer outra coisa primeiro, eu faria isso.
fonte