Estou baseando meu repositório Git em um modelo de ramificação bem-sucedido do Git e queria saber o que acontece se você tiver esta situação:
Digamos que eu esteja desenvolvendo dois ramos de recurso A e B, e B requer código de A. O nó X introduz um erro no recurso A que afeta o ramo B, mas isso não é detectado no nó Y, onde os recursos A e B foram mesclados e O teste foi realizado antes de se ramificar novamente e trabalhar na próxima iteração.
Como resultado, o bug é encontrado no nó Z pelas pessoas que trabalham no recurso B. Nesse estágio, é decidido que uma correção de bug é necessária. Essa correção deve ser aplicada aos dois recursos, pois as pessoas que trabalham no recurso A também precisam do bug corrigido, pois faz parte do recurso.
Uma ramificação de correção de bug deve ser criada a partir do nó mais recente do recurso A (aquele que ramifica do nó Y) e depois mesclada com o recurso A? Após o qual os dois recursos são mesclados para desenvolver novamente e testados antes de se ramificarem?
O problema é que é necessário que ambas as ramificações sejam mescladas para corrigir o problema. Como o recurso B não toca no código no recurso A, existe uma maneira de alterar o histórico no nó Y implementando a correção e ainda permitindo que a ramificação do recurso B permaneça inalterada e ainda possua o código fixo do recurso A?
Ligeiramente relacionado: Convenção de ramificação de erros do Git
Respostas:
Use uma confirmação distinta para corrigir o erro em uma ramificação e, em seguida, escolha essa confirmação na outra ramificação.
fonte
Indiscutivelmente, não há nenhum erro em A ou X. Corrija o erro no ramo B onde ele foi encontrado. A correção será propagada para X e A no curso normal dos eventos.
fonte
Embora não seja um fluxo de trabalho popular
git
, um fluxo de trabalho popular no Mercurial seria atualizar para revisãoX
, corrigir o bug (comoX
2 ) e refazer a mesclagemY
(o que seria um par de mesclagens no Mercurial).De fato, esse fluxo de trabalho é mais fácil,
git
pois, depois que todos mudaramY
paraY
2 , os árbitros para o originalY
serão perdidos e, eventualmente, serão coletados como lixo. Emhg
que você teria que retirar manualmente esses commits para arrumar seu repositório.fonte