क्या यह केवल-व्यवहार है?
एक सहकर्मी के साथ चर्चा के बाद, मैंने बस कोशिश की, और एसवीएन इसे समस्या के बिना संभालता है: आपको 2 पंक्तियों को संशोधित किया जाता है।
कई वीसीएस की मर्ज क्षमताओं का परीक्षण यहां बाजार, डार्क्स, गिट और मर्क्यूरियल के लिए किया जाता है : 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 मर्जिंग व्यवहार को लाभ में बदल सकते हैं। जब आपको 2 पंक्तियों को लगातार रखने की आवश्यकता होती है, लेकिन आप इसका पता नहीं लगा सकते हैं (संकलन के समय, अपने परीक्षणों या अन्य समय पर), तो आप उनसे जुड़ने का प्रयास कर सकते हैं।
इसे फिर से लिखें ...:
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
इसलिए जब आप मोडिफ 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
... मोडिफ़ 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
..., गिट संघर्ष पैदा करेगा, और आप इसे देखने के लिए मजबूर करेंगे।