Esse comportamento é apenas para git?
Depois de discutir com um colega, tentei, e o SVN lida com isso sem problemas: você modifica as duas linhas.
Os recursos de mesclagem de vários VCS são testados aqui para bazar, darcs, git e mercurial : https://github.com/mndrix/merge-this
Parece que apenas os dardos mesclam com êxito o caso "linhas adjacentes".
A aplicação de alterações adjacentes aos arquivos não é um problema difícil. Eu realmente acho que esse comportamento foi escolhido de propósito.
Por que alguém decidiria que modificar linhas adjacentes produz um conflito?
Eu acho que isso é forçar você a olhar para ele .
int max = MAX_ITEMS;
for(unsigned int i = 0; i < max; i++)
do_stuff(i);
Modif número 1, no mestre:
int max = MAX_ITEMS/2; // Do stuff only on the first half
for(unsigned int i = 0; i < max; i++)
do_stuff(i);
Modif número 2, mesclado de uma filial:
int max = MAX_ITEMS;
for(unsigned int i = 0; i < max/2; i++) // max/2: only on 1st half
do_stuff(i);
Após a mesclagem, você não deseja isso:
int max = MAX_ITEMS/2; // Do stuff only on the first half
for(unsigned int i = 0; i < max/2; i++) // max/2: only on 1st half
do_stuff(i);
Vendo esse comportamento como um recurso
Você pode transformar o comportamento de mesclagem do git em vantagem. Quando você precisar manter duas linhas consistentes, mas não conseguir detectá-las (no momento da compilação, no início dos testes ou de outra forma), tente juntar-se a elas.
Reescreva isso ...:
for(unsigned int i = 0; i < max; i++)
r = do_stuff(i);
// Need to do something else
do_something_else(r);
...para isso:
for(unsigned int i = 0; i < max; i++)
r = do_stuff(i);
do_something_else(r); // Need to do something else
Então, quando você mescla o Modif 1 ...:
for(unsigned int i = 0; i < max; i++)
r = do_stuff(i)/2; // we need only the half
do_something_else(r); // Need to do something else
... com o Modif 2 ...:
for(unsigned int i = 0; i < max; i++)
r = do_stuff(i);
if(r < 0) // do_stuff can return an error
handle_error(r);
do_something_else(r/2); // Need to do something else
..., o git produzirá um conflito, e você forçará você a olhar para ele.