एसवीएन पृष्ठभूमि से आने वाले, डीवीसीएस सिस्टम के साथ काम करने के लिए इस्तेमाल होने वाली सबसे कठिन चीजों में से एक है, जिस तरह से वे सभी किसी भी अनपेक्षित परिवर्तन को मानते हैं जो टिक टिक टाइम बम की तरह होता है।
Mercurial में, यदि आप परिवर्तनों को लाने का प्रयास करते हैं और आपकी कार्यशील प्रतिलिपि में कोई भी परिवर्तन नहीं हुआ है, तो आपको इसे केवल आने वाले परिवर्तनों को मर्ज करने के लिए हुप्स के माध्यम से कूदना होगा। शाखाओं को स्विच करने का प्रयास करें? यह आपको सब कुछ करने के लिए मजबूर कर देगा और फिर आपको तुरंत इसे दूसरे छोर पर खोल देना होगा। (एसवीएन को इन दोनों परिदृश्यों से कोई परेशानी नहीं है।)
Git उसी तरह के बारे में है। मैं एक प्रोजेक्ट पर दूसरे डेवलपर के साथ कंधे से कंधा मिलाकर काम कर रहा हूं, और मैंने उसके कांटे को अपने कांटे में डालने का प्रयास किया। इसने मुझे जाने से मना कर दिया क्योंकि मैंने अपनी काम करने वाली प्रति में बदलावों को रद्द कर दिया है । मर्ज विकल्प भी नहीं है; जाहिरा तौर पर मुझे पहले अपने बदलावों को टटोलना होगा!
यदि कोई व्यक्ति इस तरह की अत्यधिक सावधानी के साथ पूरी तरह से हानिरहित कुछ व्यवहार करता है, तो मैं इसे "भय" कहूंगा, एक तर्कहीन भय जिसे मानसिक विकार माना जाना चाहिए। लेकिन Git और Mercurial को बुद्धिमान, तर्कसंगत डेवलपर्स की दो अलग-अलग टीमों द्वारा डिज़ाइन किया गया था, इसलिए मुझे आश्चर्य होगा कि क्या वे कुछ जानते हैं जिनके बारे में मुझे पता है।
क्या कोई तकनीकी कारण है जो इस बदलाव के बारे में इस रवैये को सही ठहराता है? और यदि हां, तो प्रश्न में समस्या केवल DVCS पर मौजूद क्यों है?