What does "mine and older match in the neighborhood of each such change" mean?
"meus e mais velhos se encaixam na vizinhança de cada mudança" significa que, ao considerar cada alteração entre "mais antiga" e "sua", o contexto da mudança também pode ser encontrado em "meu". Em outras palavras, significa que “meu” e “mais velho” são idênticos no que diz respeito a cada mudança individual entre “mais velho” e “seu”. Considere
mine other yours
------------------------------------------------
Some text Some text Some text
Some more text Some more test Changed text
Continues Continues Continues
Mine changes This is gone This is gone
The file ends The file ends The file ends
Uma linha mudou entre "outra" e "minha" e outra mudou entre "outra" e "sua". Ao olhar para a mudança de “outro” para “seu”, encontramos o mesmo contexto em “meu”, de modo que a mudança pode ser aplicada a “meu” sem ambigüidade ou conflito.
Does "when only older differs" mean that mine and yours are the same but different from older?
Sim.
Isn't merging straightforward in that we can just use either mine or yours? Why isn't merging well-defined in this case?
A definição de "bem definido" é que o contexto da mudança de "mais antigo" para "seu" é idêntico em "meu". Quando "meu" e "seu" são idênticos e diferem de "mais antigos", então, por definição, a alteração não está bem definida.
Isso pode parecer surpreendente, mas o princípio orientador das fusões de três vias é que qualquer conflito, mesmo que resulte em conteúdo idêntico, deve ser identificado e examinado pelo usuário. Eu não tenho um exemplo para entregar, mas acontece que uma determinada linha é idêntica em "meu" e "seu", mas dadas outras mudanças que estão sendo fundidas, não é desejável como está no resultado da mesclagem. / p> Outra maneira de considerar isso é que o objetivo de uma fusão de três vias é conciliar duas histórias divergentes: a história que levou de "mais velha" a "minha" e a história que levou de "mais velha" a "mais velha". Sua". Mesmo que ambas as histórias levem ao mesmo conteúdo, elas precisam ser reavaliadas e não aplicadas cegamente.
Os desenvolvedores de diff3
perceberam que tais mudanças devem ser aplicadas de qualquer maneira; as opções -e
, -3
e -x
fazem isso.
How do the three cases cover all the possible cases?
O primeiro caso descreve uma análise global, mas acho que os outros dois devem ser entendidos no contexto de uma única mudança. Se considerarmos todos os três casos vistos por mudança (de “mais antigos” para “seus”), eles se tornam (lembre-se “mais velhos” e “seus” são diferentes):
- “meu” e “mais antigo” são idênticos
- "meu" e "mais velho" são diferentes, e "meu" e "seu" são diferentes
- “meu” e “mais velho” são diferentes, e “meu” e “seu” são idênticos
Considere a tabela de verdade:
mine == older mine == yours older == yours Case
--------------------------------------------------------
Yes Yes Yes N/A
Yes Yes No Imp.
Yes No Yes N/A
Yes No No 1
No Yes Yes N/A
No Yes No 3
No No Yes N/A
No No No 2
N / A significa que o caso não é considerado: não há alteração de "mais antigo" para "seu". Criança levada. significa que o caso é impossível (através da transitividade da igualdade). Isso mostra que três casos são suficientes para cobrir todas as possibilidades.
Is "changes from older to yours where mine and yours are identical" the same as the changes "when only older differs"?
Sim.