Estratégias de mesclagem do Git: espaços fazem com que o padrão não mostre nenhum conflito e traga resultados inesperados
Depois de muitos testes, obtive este cenário de teste simples:
a --> b --> c -- (master)
\ \
--> d --> b' --> e (branch)
Onde:
b'
é uma escolha de cerejab
e
é umfundir demaster
.b'
foi feito depoisc
ec
tem modificações nos mesmos arquivosb
(d
provavelmente não importa).
e
pode facilmente parecer muito inesperado.
Vamos dizer que todos eles estão lidando com o mesmo arquivo "foobar.txt
". É assim que o arquivo aparece em cada commit:
// ----------- a
foo
delme
bar
// ----------- b
foo
delme
new
bar
// ----------- c
foo
new
bar
// ----------- b'
foo
delme
new
bar
// ------------ e
foo
new
new
bar
Agora, isso foi do meu breve teste agora, com esteexato configuração.
Se você remover todosespaços lá, não existe tal problema. Mesclar apenas acusará um conflito, como eu esperaria. Mas eu não acho que usar qualquer configuração -X para espaços é o que estamos procurando aqui ... Ou é?
Enquanto isso, no meu código de produção, que foi a razão pela qual comecei a pesquisar sobre tudo isso, e que não tem tantos espaços em branco, eu pude vere
procurando algo assim em vez disso:
// ----------- e
foo
delme
new
bar
Tudo o que acontece commesclar nunca acusando qualquer conflito!
Se o git quisesse fazer qualquer um dos seus voodoo mágicos auto merge aqui, isto é o que eu esperaria que se pareça com:
// ----------- e
foo
new
bar
Mas isso também não acontece.
Como um pouco deaviso Legal...
Eu também tenteilendo o manual f, mas eu realmente não consigo entender muitos pontos sob estratégias de mesclagem. Além disso, não diz realmente o que oresolve
estratégia está fazendo sob o capô, por exemplo:
Ele tenta detectar cuidadosamente ambiguidades cruzadas e é considerado geralmente seguro e rápido.
Isso não diz nada.
O texto sobre o padrãorecursive
é maior, mas também não consegui extrair informações suficientes:
Isso foi relatado para resultar em menos conflitos de mesclagem sem causar mesclagens incorretas por testes feitos em confirmações de mesclagem reais obtidas do histórico de desenvolvimento do kernel do Linux 2.6.
Relatado? Então nós temos 1 teste de unidade muito pesado e presumimos que alguns relatórios estão corretos?
Bem, é tudo muito vago para mim.
eu acho queEu devo estar fazendo algo errado! Então, como posso fazer certo?
O que preciso fazer para voltar a me fundir sem preocupações?