Git उपयोगकर्ता यह क्यों कहते हैं कि सबवर्सन में स्थानीय रूप से सभी स्रोत कोड नहीं होते हैं?


23

मैं केवल वही कर रहा हूं जो मैंने एसओ पर पढ़ा है, इसलिए मुझे माफ कर दो, लेकिन मैंने पढ़ा कि सबविर्सन पर गिट का एक बड़ा फायदा यह है कि जीआईटी डेवलपर को सभी स्रोत कोड स्थानीय स्तर पर देता है, कुछ भी नहीं करने पर सर्वर।

SVN और TortoiseSVN के मेरे सीमित उपयोग के साथ, मेरे पास सभी स्रोत कोड थे, या कम से कम मुझे लगा कि मैंने किया है। उदाहरण के लिए, मेरे पास एक वेबसाइट है। मैं इसे SVN पर अपलोड करता हूँ। मैं अभी भी स्थानीय रूप से अपनी वेबसाइट चला रहा हूं, क्या मैं नहीं हूं? अगर कोई बदलाव करता है और मैं जुड़ा नहीं हूं, तो इससे कोई फर्क नहीं पड़ेगा कि मेरे पास Git है या नहीं, जब तक कि मैं सर्वर को फिर से कनेक्ट नहीं करता।

मुझे समझ नहीं आता। मैं इस एक बिंदु को छोड़कर एक बनाम दूसरे के पुनर्विचार के लिए नहीं कह रहा हूं।


2
ऐसा नहीं है कि आपके पास स्थानीय रूप से आपके सभी स्रोत कोड हैं, यह है कि आपके पास स्थानीय रूप से संपूर्ण भंडार इतिहास है। यह सर्वर सिंक्रनाइज़ेशन के अलावा सभी रिपॉजिटरी इंटरैक्शन को बहुत तेज़ बनाता है।
स्टोनमेटल

जवाबों:


69

आप जिस सवाल पर सवाल उठा रहे हैं, वह गलत है:

कि तोड़फोड़ पर Git का एक बड़ा फायदा यह है कि Git स्थानीय स्तर पर डेवलपर को सभी स्रोत कोड देता है

Subversion और Git दोनों के साथ आपके पास अपना स्रोत कोड स्थानीय रूप से होता है। Git के साथ आप अपने स्रोत कोड और अपने स्थानीय मशीन पर एक भंडार है

यह कुछ इस तरह चलता है।

तोड़फोड़:

आपका कोड <-> रिपोजिटरी

Git:

आपका कोड <-> आपका स्थानीय रिपॉजिटरी <-> एक रिमोट रिपॉजिटरी (... <-> एक और रिमोट रेपो, और इसी तरह)

इस संरचना से आपको एक लाभ यह है कि आप अभी भी स्रोत नियंत्रण का उपयोग कर सकते हैं और अन्य टीम के सदस्यों (जिनके साथ आप रिमोट रिपॉजिटरी साझा करते हैं) के काम को परेशान किए बिना अपने स्थानीय रिपॉजिटरी में अपने स्थानीय परिवर्तन कर सकते हैं।

तोड़फोड़ के साथ आपको या तो अन्य लोगों के लिए निर्माण को तोड़ने का जोखिम उठाना होगा या किसी भी स्रोत नियंत्रण के बिना लंबे समय तक स्थानीय विकास को भुगतना होगा जो कि एक बड़ी प्रतिबद्धता के साथ समाप्त होता है (या अधिक संभावना है कि एक वापसी)।

दूसरी ओर, Git के साथ, आप अपने स्थानीय रिपॉजिटरी में इन परिवर्तनों को करने के लिए स्वतंत्र महसूस करेंगे, लॉग्स और विचलन या अपने परिवर्तन देखेंगे, और केवल तभी जब आप महसूस करें कि यह टीम के साथ साझा करने के लिए तैयार है स्थानीय से परिवर्तनों को धकेल दें रिमोट के लिए भंडार।


10
यह एक बहुत अच्छा जवाब है और वास्तव में "के साथ घर हिट ..." जोखिम अन्य लोगों के लिए निर्माण को तोड़ने या किसी भी स्रोत नियंत्रण के बिना लंबे समय तक स्थानीय विकास से पीड़ित ... "
चार्ल्स स्प्रेबेरी

1
@cspray: धन्यवाद! मुझे यकीन है कि अन्य लाभ भी हैं, लेकिन यह सबसे बड़ा दर्द है जो मैंने Svn के साथ किया था।
गोरान जोविक

git FTW (8 और जाने के लिए ...)
ट्रेवर बॉयड स्मिथ

2
@DanNeely: वास्तव में ऐसा होता है - ओपी ने एक दावे के बारे में पूछा जो उसने कहीं पढ़ा था और जवाब है कि यह बस सच नहीं है (मेरे जवाब का पहला भाग देखें)। दूसरा भाग सिर्फ इस बात का स्पष्टीकरण है कि जिसने भी दावा किया है वह शायद कहना चाहता है और क्यों।
गोरान जोविच

1
@ जियोर्जियो: यह कोशिश करो और तुम्हें पता चल जाएगा :) गंभीरता से, मुझे नहीं लगता कि मैं कभी भी ऐसा करने में कामयाब रहा हूं बिना किसी समस्या के (पूरी तरह से मैनुअल मर्ज करने के अलावा, जो उपकरण के उद्देश्य को हरा देता है)
गोरान जोविक

17

Git या Mercurial आपकी संपूर्ण रिपॉजिटरी को स्थानीय रूप से सभी संशोधनों और नामित शाखाओं के साथ संग्रहीत करता है। तोड़फोड़ केवल एक स्टोर करता है - आमतौर पर हेड रिविजन। Git और Mercurial के साथ आप पूर्ण रिपॉजिटरी (यानी आपका वर्तमान स्रोत कोड और इसका इतिहास) तक पहुँच सकते हैं, यहां तक ​​कि जब आपका नेटवर्क SVN के साथ टूट जाता है तो आप उस अंतिम संशोधन तक सीमित रह जाते हैं जिसे आपने अपडेट किया था।


1
@ मर्फ़ धन्यवाद। यह अनिवार्य रूप से मेरा मतलब था। मैंने स्पष्ट करने की कोशिश की।
Amenti

यह सिर्फ एक सवाल नहीं है कि क्या आपके पास सर्वर से नेटवर्क कनेक्शन है या नहीं; स्थानीय IO नेटवर्क IO की तुलना में बहुत तेज़ और कम विलंबता है जो इतिहास की जांच करता है या किसी फ़ाइल को बहुत तेज़ी से दोष देता है (TrotiseSVN दोष चेतावनी "कृपया प्रतीक्षा करें - इसमें कई मिनट लग सकते हैं। गंभीरता से!")। ट्रेडऑफ़ यह है कि सभी इतिहास स्थानीय होने से बड़ी रिपॉजिटरी में बहुत अधिक डिस्क स्थान की आवश्यकता हो सकती है; यह लैपटॉप पर समस्याग्रस्त हो सकता है आप छोटे गैर-बैंक-ब्रेकिंग एसएसडी के पूरक के लिए सिर्फ एक अतिरिक्त ड्राइव नहीं जोड़ सकते थे।
डैन नीली

@ DanNeely की टिप्पणी शायद 2012 में उचित थी, लेकिन 4 साल बाद एक git प्रोजेक्ट को ढूंढना लगभग असंभव है, जो SSD के किसी भी बड़े हिस्से पर कब्जा कर सकता है
इगोर स्टॉप्टा

7

संक्षिप्त उत्तर यह है: git के साथ आपके सभी स्रोत कोड होते हैं, तोड़फोड़ के साथ आपके पास अपने स्रोत कोड के सबसे हाल के संस्करण होते हैं।

Git स्थानीय रूप से आपके भंडार के पूरे इतिहास की एक प्रति रखता है। तोड़फोड़ के साथ पूरा इतिहास एक सर्वर पर है।


2

मुझे लगता है कि आप जो प्राप्त कर रहे हैं वह यह है कि एसवीएन के साथ, आपके सभी कार्यों को सर्वर के साथ संचार की आवश्यकता होती है, जहां जीआईटी नहीं करता है। एसवीएन के साथ, यदि आप शाखा करना चाहते हैं, तो आप सर्वर पर शाखा करते हैं और उस शाखा को नीचे खींचते हैं। जीआईटी के साथ, आप कभी भी "सर्वर" के बारे में जाने बिना एक स्थानीय शाखा बना सकते हैं।

आप यह कहने में सही हैं कि आपके पास एसवीएन और जीआईटी दोनों के साथ स्रोत कोड है, लेकिन जीआईटी के साथ, एक केंद्रीकृत सर्वर होना आवश्यक नहीं है जिसमें स्रोत कोड भी शामिल है। जीआईटी के साथ, आप स्रोत कोड के साथ केवल व्यक्ति हो सकते हैं, फिर भी अभी भी वे सभी कार्य करने में सक्षम होंगे जो आप एक सामान्य टीसीएस के साथ करेंगे।

मैंने जीआईटी के खिलाफ दलीलें सुनी हैं, और मुझे लगता है कि यह आपके सवाल के साथ मदद कर सकता है, यह कहते हुए कि चूंकि आपको केंद्रीय रेपो के लिए प्रतिबद्ध होने की आवश्यकता नहीं है, आप अपने स्रोत कोड के मालिक हैं जब तक कि आपने इसे अपने सर्वर पर नहीं रखा है, और तम्हारे पास एक है। SVN के साथ, संस्करण नियंत्रण रखने का एकमात्र तरीका सर्वर के लिए प्रतिबद्ध है, लेकिन GIT के साथ, आप संभावित रूप से अपने स्थानीय मशीन पर सब कुछ रख सकते हैं और यदि कोई गलत हो जाता है, तो आप "सब कुछ खो सकते हैं" भले ही आप आसानी से कर सकें। यदि आपने प्रतिबद्ध नहीं किया है और आपका HDD दुर्घटनाग्रस्त हो गया है, तो SVN के साथ अपने सभी परिवर्तन खो दें।


1

यह कहते हुए कि चूंकि आपको केंद्रीय रेपो के लिए प्रतिबद्ध होने की आवश्यकता नहीं है, आप अपने स्रोत कोड के मालिक हैं जब तक कि आपने प्रतिबद्ध नहीं किया है और इसे अपने सर्वर पर धकेल दिया है, यदि आपके पास एक है। SVN के साथ, संस्करण नियंत्रण रखने का एकमात्र तरीका सर्वर के लिए प्रतिबद्ध है, लेकिन GIT के साथ, आप संभावित रूप से अपने स्थानीय मशीन पर सब कुछ रख सकते हैं और यदि कोई गलत हो जाता है, तो आप "सब कुछ खो सकते हैं" भले ही आप आसानी से कर सकें। यदि आपने प्रतिबद्ध नहीं किया है और आपका HDD दुर्घटनाग्रस्त हो गया है, तो SVN के साथ अपने सभी परिवर्तन खो दें।

यदि आप रोज़ धक्का देते हैं, तो जोखिम छोटा होना चाहिए। लेकिन यदि आप एसवीएन सर्वर के लिए दैनिक रूप से प्रतिबद्ध हैं, तो दिन के अंत में, आप एक बड़े बदलाव में सब कुछ कर सकते हैं, जो हर बदलाव को छोटे चरणों में अलग नहीं करता है। गिट के साथ, आपको कई छोटे-छोटे काम करने के लिए प्रोत्साहित किया जाता है। धक्का देते समय, यदि विलय की आवश्यकता होती है, तो विलय और धक्का देने की कोशिश करें। यदि आप इस समय विलय नहीं कर सकते हैं, तो आप सर्वर पर एक नई शाखा या किसी अन्य रिपॉजिटरी को धक्का दे सकते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.