Bu sadece git davranışı mı?
Bir meslektaşımla tartıştıktan sonra az önce denedim ve SVN sorunsuz bir şekilde ele alıyor : 2 satır değiştirilmiş.
Birkaç VCS'nin birleştirme yetenekleri burada pazar, darcs, git ve mercurial için test edilmiştir : https://github.com/mndrix/merge-this
Görünüşe göre sadece darcs "bitişik çizgiler" davasını başarıyla birleştiriyor
Dosyalara bitişik değişiklikler uygulamak zor bir sorun değildir. Gerçekten bu davranışın bilerek seçildiğini düşünüyorum.
Neden biri bitişik çizgileri değiştirmenin bir çelişki yarattığına karar veriyor?
Bunun sizi bakmaya zorlamak olduğunu düşünüyorum .
int max = MAX_ITEMS;
for(unsigned int i = 0; i < max; i++)
do_stuff(i);
Değişiklik numarası 1, ana birimde:
int max = MAX_ITEMS/2; // Do stuff only on the first half
for(unsigned int i = 0; i < max; i++)
do_stuff(i);
Bir daldan birleştirilmiş 2 numaralı değişiklik:
int max = MAX_ITEMS;
for(unsigned int i = 0; i < max/2; i++) // max/2: only on 1st half
do_stuff(i);
Birleşmeden sonra bunu istemezsin:
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);
Bu davranışı bir özellik olarak görme
Git birleştirme davranışını bir avantaja dönüştürebilirsiniz. 2 çizgiyi tutarlı tutmanız gerektiğinde ancak tespit edemiyorsanız (derleme zamanında, testlerinizin başında veya başka bir durumda), onlara katılmayı deneyebilirsiniz.
Bunu yeniden yaz ...:
for(unsigned int i = 0; i < max; i++)
r = do_stuff(i);
// Need to do something else
do_something_else(r);
...buna:
for(unsigned int i = 0; i < max; i++)
r = do_stuff(i);
do_something_else(r); // Need to do something else
Yani Modif 1'i birleştirdiğinizde ...:
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 ile ...:
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 bir çatışmaya neden olacak ve siz de ona bakmaya zorlayacaksınız.