Acabei de alterar as configurações de ramificação em meu repositório GitHub, para que minha ramificação [next] exija uma construção de IC de passagem através de uma solicitação pull.
Seguiu-se uma discussão com vários membros da equipe sobre falhas nos testes.
Por uma questão de contexto ...
O repositório possui uma ramificação [master] na qual somente o PR é liberado quando há uma versão, portanto [master] contém o código da última versão, independentemente de ser um major, um secundário, um hotfix, um beta, alfa / compilação de pré-lançamento.
O ramo [next] é o "padrão", onde pretendemos manter o código "release-ready"; tecnicamente, esse ramo poderia ser transferido para o [mestre] a qualquer momento e liberado.
Garfos individuais têm suas próprias ramificações de desenvolvimento e contribuem com o PR para o [próximo].
Quando eu reviso um PR não trivial, mesclarei o ramo de desenvolvimento do colaborador no meu ramo "review" e, se vir coisas que posso corrigir rapidamente, confirmará / enviará alterações e novos testes (às vezes com falha) e PR de volta ao ramo de desenvolvimento do colaborador; quando eles mesclam minhas alterações, fazem com que os novos testes com falha passem e, em seguida, pressionam, seu PR é sincronizado, e depois mesclarei o PR em [próximo].
Mas essa pergunta não é sobre passar nos testes, é sobre os que falham .
Testes com falha documentam o que precisa ser corrigido.
Bugs conhecidos devem ter testes escritos, para que possamos saber o que não está funcionando.
Tecnicamente, a lista de problemas do GitHub (filtrada por erros e / ou rótulos críticos ) também faz isso. É uma boa prática também ter vários testes com falha para documentar bugs?
Uma compilação falha em [próximo] significaria que não estamos liberar-pronto ... mas, em seguida, "ser liberação-ready" é um pouco como "estar pronto" para ter filhos - você nunca está completamente pronto para isso, e algo, algum lugar (de importância variável) inevitavelmente dará errado com o lançamento.
Então, estamos apenas passando os testes para o [próximo]. Onde empurrar testes falhos, então? Quero dizer, fora do processo de PR / revisão?
Por exemplo, um usuário relata um novo bug na lista de problemas e eu gostaria de escrever um conjunto de testes com falha - para especificar o que precisa ser feito e onde, o que facilita a coleta de novos colaboradores e, eventualmente, PR uma correção.
Onde devo empurrar esses testes com falha? Ou é mesmo uma boa idéia enviar testes com falha para qualquer lugar?
fonte
Respostas:
O que eu faria nessa situação é marcar os testes com falha como "ignorados" - dessa forma, você ainda tem o teste para saber o que precisa corrigir no futuro, mas não vai acabar com construções quebradas .
Se você também marcar cada teste com a referência do rastreador de problemas para corrigir o problema, será uma maneira fácil de vincular as coisas.
fonte
O ramo principal do repositório não é o ramo principal. A mesclagem no mestre não serve a nenhum "propósito real" e esse ramo não está fazendo as coisas que um ramo deve fazer (a saber, mover ).
Você está abusando deste ramo como um Tag da versão mais recente.
Em vez de usar uma ramificação, use uma tag. Quando você deseja liberar, execute as etapas necessárias em um "Release-Branch", assim como um tópico. Então você mescla isso em [next] e coloca um Tag nele.
O papel que [o próximo] cumpre é o de um ramo mestre. Somente código pronto para lançamento entra lá. Qualquer outra coisa seria um ramo [de desenvolvimento]. Uma ramificação de desenvolvimento contém trabalho que deve ser estabilizado . Isso significa: remover [mestre], redefinir [próximo] da maneira que você já fez e criar outro ramo para um trabalho "menos estável".
Como é mais uma exceção do que a regra de que precisa haver falhas nos testes, que lembram bugs pendentes, não seria um problema criar e destruir esse ramo menos estável, conforme necessário
fonte
git checkout -b HotFix ReleaseTag
(ou seja, se eu me lembro do ramo criando a sintaxe do checkout corretamente). Isso deve criar uma ramificação HotFix fora do ReleaseTag