Это поведение только для мерзавцев?
После обсуждения с коллегой я только что попробовал, и SVN справляется с этим без проблем: вы модифицируете 2 строки.
Возможности слияния нескольких VCS тестируются здесь на базаре, darcs, git и mercurial : https://github.com/mndrix/merge-this
Кажется, только дарки успешно объединяют дело "соседних линий".
Применение смежных изменений к файлам не является сложной проблемой. Я действительно думаю, что это поведение было выбрано специально.
Почему кто-то решил, что изменение соседних строк приводит к конфликту?
Я думаю, что это заставит вас взглянуть на это .
int max = MAX_ITEMS;
for(unsigned int i = 0; i < max; i++)
do_stuff(i);
Модификация № 1, о мастере:
int max = MAX_ITEMS/2; // Do stuff only on the first half
for(unsigned int i = 0; i < max; i++)
do_stuff(i);
Модификация № 2, объединенная из ветки:
int max = MAX_ITEMS;
for(unsigned int i = 0; i < max/2; i++) // max/2: only on 1st half
do_stuff(i);
После слияния вы не хотите этого:
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);
Видя это поведение как особенность
Вы можете превратить поведение git merging в преимущество. Когда вам нужно сохранить согласованность двух строк, но вы не можете обнаружить их (во время компиляции, в начале ваших тестов или еще), вы можете попробовать присоединиться к ним.
Перепишите это ...:
for(unsigned int i = 0; i < max; i++)
r = do_stuff(i);
// Need to do something else
do_something_else(r);
...к этому:
for(unsigned int i = 0; i < max; i++)
r = do_stuff(i);
do_something_else(r); // Need to do something else
Итак, когда вы объединяете 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
... с 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
..., git создаст конфликт, и вы заставите его взглянуть на него.