अभी भी तोड़फोड़ का उपयोग करने के लिए विशिष्ट कारण? [बन्द है]


22

मैं अपनी कंपनी के लिए एक संस्करण नियंत्रण प्रणाली चुनना चाहता हूं। अब तक मुझे पता है कि मेरे पास Git, Subversion और Mercurial है।

इन दिनों मैं देख रहा हूँ कि Git का सबसे अधिक उपयोग किया जाता है, इसलिए मुझे आश्चर्य हो रहा है: क्या अभी भी तोड़फोड़ का उपयोग करने का कोई विशेष कारण होगा, या मुझे सीधे Git में जाना चाहिए?


36
वे दोनों काम करते हैं। महत्वपूर्ण बात यह है कि क्या वे आपकी आवश्यकताओं को पूरा करेंगे, जो आपने हमें नहीं बताया है।
मैथ्यू फ्लिन


11
किस तर्क पर आप मरकरी को बाहर करते हैं?
मौविसील

8
-1 सब्जेक्टिव (बाथिंग आईएमएचओ) शब्दांकन के लिए और "उन दिनों मैं देख रहा हूं कि गिट का सबसे ज्यादा इस्तेमाल होता है" - उद्धरण की आवश्यकता है। खुले स्रोत की दुनिया में Git बेहद आम है, लेकिन कॉर्पोरेट स्पेस में यह बहुत दुर्लभ है। कोर वास्तव में एक एकल, केंद्रीय, आधिकारिक भंडार के विचार को पसंद करते हैं और बदलने के लिए बहुत धीमी हैं। कॉर्पोरेट स्पेस में आपको SVN की तुलना में अच्छा ole CVS देखने की अधिक संभावना है, यहां तक ​​कि DVCS को भी कभी ध्यान न दें।
कीथ

4
@ रॉबिनविंसलो - एसवीएन गिट से अलग है। कुछ परिस्थितियों में बेहतर और दूसरों के लिए बेहतर अनुकूल। व्यक्तिगत रूप से मैं DVCS को सामान्य रूप से पसंद करता हूं और आप स्पष्ट रूप से Git पसंद करते हैं, लेकिन दोनों व्यक्तिपरक राय हैं। वे बिना मूल्य के नहीं हैं, लेकिन वे इस तरह की साइट पर नहीं हैं।
कीथ

जवाबों:


46

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

यदि आपके पास केवल एक केंद्रीय रिपॉजिटरी है (जो आपकी सभी कंपनी की आवश्यकता होगी यदि वे अभी तक स्रोत नियंत्रण के बिना प्राप्त करने के लिए पर्याप्त छोटे हैं), तो इसके साथ बातचीत करने के लिए एसवीएन का उपयोग करना बहुत सरल है। उदाहरण के लिए, SVN के साथ, आप रिपॉजिटरी से परिवर्तन खींच सकते हैं, या एकल ऑपरेशन के साथ अपने स्थानीय परिवर्तन कर सकते हैं, जबकि HG और Git को समकक्ष कार्य करने के लिए दो या तीन चरणों की आवश्यकता होती है।

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


16
मैं आपके अनुमान से पूरी तरह सहमत नहीं हूं, लेकिन मैं SVN के पक्ष में एक महत्वपूर्ण बिंदु जोड़ना चाहूंगा: उद्योग में बहुत से लोग SVN के साथ सहज हैं, लेकिन इसके साथ आराम से काम करने के लिए पर्याप्त Git नहीं जानते हैं। यदि आपकी पूरी टीम एसवीएन के लिए उपयोग की जाती है, तो गिट पर स्विच करना काफी लागत पर आ सकता है। (विपरीत भी सच हो सकता है, निश्चित रूप से)।
जोकिम सॉर

8
अगर मैं कर सकता तो मैं इस दर्जन बार उखाड़ फेंकता। बहुत से लोग सनक के साथ जाते हैं, लेकिन वास्तव में नहीं सोचते हैं कि उन्हें वितरित स्रोत नियंत्रण की आवश्यकता क्यों होगी।
व्यंग्यात्मक

21
@ उत्साही: मुझे ठीक-ठीक पता है कि मैं हमेशा हर प्रोजेक्ट पर वितरित स्रोत नियंत्रण क्यों चाहता हूं। ब्रांचिंग बनाने और सरल, स्पष्ट और विश्वसनीय बनाने में इसका महत्वपूर्ण दुष्प्रभाव है। तोड़फोड़ के साथ कोने के मामलों में अभी भी तोड़फोड़ की जाती है क्योंकि जो बुनियादी मॉडल इसे चुना गया था वह इसे और अधिक जटिल बनाता है।
जान हुडेक

18
वितरित संस्करण नियंत्रण "सनक" नहीं है। यह स्रोत नियंत्रण का एक विकास है, जैसे समवर्ती संस्करण नियंत्रण फ़ाइल-लॉकिंग प्रतिमान पर एक विकास था।
जेस्पर सेप

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

19

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

हम ज्यादातर विजुअल स्टूडियो के साथ काम करते हैं; आईडीई में एकीकरण एसवीएन के साथ निश्चित रूप से बेहतर है जैसे कि अभी गिट के साथ। यह भविष्य में बदल सकता है, लेकिन मैं निश्चित रूप से आपके निर्णय में इसे उतना ही मापूंगा जितना कि संस्करण नियंत्रण फ़ंक्शन।

हर चीज की तरह, एक संस्करण नियंत्रण प्रणाली अपने आप में एक लक्ष्य नहीं है, बस एक उपकरण आपको पाने के लिए जहां आप जा रहे हैं। जो आपकी स्थिति के आधार पर आपको सबसे तेजी से प्राप्त करने वाला है उसे चुनें।


यह अच्छी बात है। मुझे लगता है कि एक कारण है कि लोग एसवीएन पर गिट का शिकार करते हैं कि जीआईटी में बेहतर सीएलआई टूलींग है। लेकिन यह विंडोज पर TortoiseSVN की तरह अच्छे 3rd पार्टी SVN GUI के साथ ऑफसेट किया जा सकता है।
व्यंग्यात्मक

2
यह उन कारणों में से एक है जो हम Git के ऊपर Mercurial (और TortoiseHg) के लिए गए थे। वितरित संस्करण नियंत्रण और सभ्य टूलींग और आईडीई एकीकरण के फायदे ।
हैप्पीकट

15

मैं एक गिट प्रशंसक हूं। हाल ही में मुझे यह स्वीकार करना पड़ा कि Git के डाउनसाइड्स में से एक यह है कि यह svn की रिलीज़ संख्या के विपरीत हैश वाले संस्करणों की पहचान करता है। रिलीज़ नंबर को फोन या कुछ इस तरह से पारित किया जा सकता है।

और वह केवल वही समर्थक है जिसकी मैं कल्पना कर सकता हूं। यदि आप वास्तव में उस सुविधा पर भरोसा करना चाहते हैं, तो आप इसे वितरित और / या केंद्रीकृत वीसीएस बाजार में रख सकते हैं । Git में ऐसे टैग होते हैं जो उद्देश्य की पूर्ति कर सकते हैं।

वैसे भी मैं सिर्फ त्वरित शाखा स्विचन के बिना विकसित होने की कल्पना नहीं कर सकता था, और टकरा सकता था। इन दो विशेषताओं ने अकेले एसवीएन को हराया, जहाँ तक मुझे एक ही लक्ष्य को प्राप्त करने के लिए एक ही कार्य को अलग-अलग निर्देशिकाओं में एक पूरे पेड़ बनाने और जाँचने की आवश्यकता है।

तथाकथित "वितरित संस्करण नियंत्रण की उन्नत विशेषताएं" समय के साथ आती हैं, और आपको उन्हें बहुत शुरुआत में सीखने की ज़रूरत नहीं है। उनसे डरें नहीं। वे यहां आपकी मदद करने के लिए हैं, रास्ते में आने के लिए नहीं। और DVCS के लिए एक केंद्रीय भंडार स्थापित करने के लिए कोई समस्या नहीं है।


1
यह वास्तव में म्यूट है, git को हैश के केवल एक बड़े हिस्से की आवश्यकता होती है जो कि अलग हो सके, आमतौर पर कुछ ~ 6 char काफ़ी होता है, पूरे हैश का नहीं।
टीसी 1

2
व्यवहार में, आप कभी भी गीट हैश को पास नहीं करते हैं। आप हैश के किसी भी अनूठे उपसर्ग का उपयोग कर सकते हैं, जो आमतौर पर 6-7 वर्ण का होता है।
जेस्पर सेप

1
@ जेस्पर: हाँ, लेकिन एसवीएन रिलीज़ संख्या समय के साथ क्रमिक रूप से बढ़ जाती है, जबकि गिट के हैश, भले ही आप उन्हें संक्षिप्त करते हैं, साथ ही यादृच्छिक भी हो सकते हैं।
कीथ थॉम्पसन

2

एसवीएन के साथ आप आसानी से फ़ोल्डर स्तर तक एक रिपॉजिटरी के हिस्सों की जांच कर सकते हैं, जबकि गिट के साथ, आपको पूरे इतिहास सहित संपूर्ण रिपॉजिटरी मिलती है।

स्थिति के आधार पर यह एसवीएन के लिए कुछ फायदे हो सकते हैं

(इसमें कुछ बड़ी कमियां भी हैं जैसे कि छिपा हुआ ".सावन" कचरा आपके फ़ोल्डर के पेड़ के सभी तरह से)।


3
नोट: v1.7 के बाद से नहीं। कचरा कचरा - अब यह सब एक ही स्थान पर संग्रहीत है।
gbjbaanb

यह सही नहीं है - git आपको केवल इतिहास के बिना, फ़ाइलों को चेकआउट करने की अनुमति देता है, और यदि आप चाहें तो केवल रेपो-सिंगल फ़ाइलों के कुछ हिस्सों को चेकआउट करना भी संभव है। यह svn की तुलना में थोड़ा अधिक जटिल है, लेकिन क्षमता है।
बेनुबर्ड

2

"यदि आपके पास एक कार्य है जिसे छह घंटे पर किया जा सकता है, तो एक उपकरण लिखना बेहतर होता है जो 20 मिनट में करता है, यहां तक ​​कि उपकरण बनाने में छह घंटे लगते हैं?"

वितरित संस्करण नियंत्रण से निपटने के लिए एक अलग जानवर है। इसके लिए प्रत्येक डेवलपर के लिए पर्याप्त सीखने की आवश्यकता होती है। यदि आपके पास प्रत्येक डेवलपर के लिए सीखने की प्रक्रिया को समायोजित करने के लिए बफर है, तो आपको एक अच्छे वितरित संस्करण नियंत्रण प्रणाली में जाना चाहिए। एक बार सीखने का चरण वितरित संस्करण नियंत्रण खत्म हो जाने के बाद, केंद्रीकृत संस्करण नियंत्रण से बहुत बेहतर है।

वितरित संस्करण नियंत्रण एक घटना प्रतीत होता है। यह यहां बहुत लंबे समय तक रहने के लिए है, यह बेहतर है कि हम इसे बाद की तुलना में जल्द ही अनुकूल कर लें। मुझे वही चर्चा याद है जब एसवीएन नया था और लोगों को सीवीएस के लिए इस्तेमाल किया जाता था, एसवीएन का उपयोग नहीं करने के लिए बहुत सारे तर्क दिए गए थे, लेकिन अंततः एसवीएन सबसे लोकप्रिय संस्करण नियंत्रण प्रणाली बन गया।

यदि कंपनी मौजूदा संस्करण नियंत्रण प्रणाली में बहुत सारे स्रोत कोड के साथ अच्छी तरह से स्थापित है, तो नई प्रणाली में जाना एक बड़ा काम है, लेकिन अगर कंपनी छोटी है या शुरू हो रही है, तो नए संस्करण पर नियंत्रण करना बहुत आसान है। लेकिन यदि आप एक पुराने संस्करण नियंत्रण (एक नए सेटअप में) से चिपके रहते हैं, तो आप भविष्य में कहीं न कहीं अड़चन से टकराएंगे, जहाँ आपको अंततः एक संस्करण नियंत्रण प्रवास की योजना बनानी होगी।

मैंने बहुत सारे प्रो SVN टिप्पणियां देखी हैं, लेकिन उनमें से सभी प्रकृति के हैं "SVN बुरा नहीं है" के बजाय "SVN बेहतर है"। इसलिए मैं दृढ़ता से अनुशंसा करूंगा कि आप अपनी परियोजना के लिए एक वितरित संस्करण नियंत्रण (जैसे गिट) चुनें।

SVN पर GIT के EDIT लाभ

  1. कोई समर्पित सर्वर की आवश्यकता नहीं है वास्तव में, दोनों w / oa सर्वर का उपयोग किया जा सकता है।
  2. नेटवर्क कनेक्शन के बिना भी विकास जारी रख सकते हैं।
  3. शाखा प्रबंधन ज्यादा आसान है।
  4. बांस जैसे सीआई उपकरण से बेहतर समर्थन

किसी ने एसवीएन से चिपके रहने के कारण (दृश्य स्टूडियो के लिए) टूलिंग का उल्लेख किया। http://gitscc.codeplex.com/ विजुअल स्टूडियो के लिए GIT सपोर्ट प्रदान करता है।


6
एसवीएन बाइनरी फाइलों को बेहतर तरीके से हैंडल करता है फिर जीआईटी या एचजी।
नकली नाम

2
"आप भविष्य में कहीं न कहीं अड़चन डालेंगे, जहां आपको अंततः एक संस्करण नियंत्रण प्रवास की योजना बनानी होगी ..." क्षमा करें, मैं सहमत नहीं हो सकता कि यह आज कदम बनाने का एक अच्छा कारण है। मैंने कई परियोजनाओं पर काम किया है, जहां यह दृष्टिकोण चीजों को और अधिक जटिल बनाने की ओर ले जाता है, जहां तक ​​कि उन भविष्य के लाभों का लाभ उठाने से पहले परियोजना को रद्द कर दिया जाता है। कभी-कभी काफी अच्छा होता है, काफी अच्छा होता है। YAGNI से चिपके रहें और आज क्या काम करें। बाद में पलायन के बारे में चिंता करने के लिए पर्याप्त समय होगा। कम से कम आपके पास अभी भी एक परियोजना होगी।
nrr101

2
Once the learning phase is over Distributed Version Control is much better than Centralized Version Control.मैं इससे पूरी तरह असहमत हूं। कुछ परिस्थितियों में इसके कुछ कथित लाभ हो सकते हैं, लेकिन svn में संस्करण संख्या मानव-पठनीय होने के रूप में सरल है, कई संगठनों में बड़े पैमाने पर लाभ है।
TZHX

1
@ रेपिरोगन - यह सब नीचे आता है जिसे आप रिपॉजिटरी में डालने जा रहे हैं। 11.1 GB के साथ काम करने वाले मुख्य रिपॉजिटरी में से एक का HEAD अकेला है! अगर मेरे पास यह एक git / bzr / hg रेपो में होता, तो शायद 100+ GB तक ले जाता।
फेक नेम

1
बेशक, यह इसलिए है क्योंकि यह विशेष रेपो पीसीबी फाइलों और 3 डी मॉडल से भरा है, जो सभी बाइनरी प्रारूप में हैं, और बहुत अधिक स्थान कुशल नहीं हैं। यहाँ अनुशंसा (Electronics.SE, उदाहरण के लिए पीसीबी ddesign फ़ाइलों को स्टोर करने वाले लोगों के लिए, आदि) बहुत अलग है, अगर यह किसी के लिए सोर्सिंग-कोड संग्रहीत है।
फेक नेम

1

उन दिनों तोड़फोड़ का उपयोग करने के लिए कोई विशेष कारण होगा

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

हाँ, वहाँ उन सभी जटिल गाइडों का वर्णन किया गया है जो बताते हैं कि कैसे एक बार समझ में आता है कि एक बार जब आप समझते हैं कि शाखाएँ एक होमबॉर्फिक एंडोफुन्क्टर हैं जो हिल्बर्ट स्थान के उपमानों का मानचित्रण करती हैं। 1

मुझे समझ नहीं आता। लेकिन आप जानते हैं कि क्या? इससे कोई फर्क नहीं पड़ता। Git का उपयोग करने के लिए आपको किसी भी सामान को जानने की आवश्यकता नहीं है।

अधिकांश भाग के लिए, Git और Hg का उपयोग करना आसान है और SVN पर उनके निश्चित लाभ हैं। कमरे में हाथी निश्चित रूप से शाखा है: शाखाएं सिर्फ गिट और एचजी में काम करती हैं। इसके विपरीत, एसवीएन में वे सबसे अच्छे रूप में दर्दनाक होते हैं और सबसे खराब (कई सिर को मिलाते हुए) टूट जाते हैं।

बेशक आप अभी भी एसवीएन का उपयोग कर सकते हैं । आप अभी भी विंडोज एक्सपी का उपयोग कर सकते हैं। हालांकि, जिन उपयोगकर्ताओं ने कोशिश की है उनमें से अधिकांश सहमत हैं कि विकल्पों में से एक बहुत बेहतर है।


1 हां मुझे लगता है कि यह एक मजाक है। मुझे लगता है।


एक हिल्बर्ट अंतरिक्ष के सबमनिफोल्ड्स की मैपिंग होमोमोर्फिक एंडोफुन्क्टरों के साथ एक गीट ट्यूटोरियल? मुझे वह पढ़ने की जरूरत है! लेकिन यह डारस्क पर लागू नहीं होता है, जो हास्केल में लिखा गया है (जिसे मैं एंडोफूनक्टर कहता हूं ) और क्वांटम यांत्रिकी (इसलिए हिल्बर्ट स्पेस ) से प्रेरित है ? मैं वास्तव में नहीं देख सकता कि इन चीजों के साथ Git और HG का क्या संबंध है।
वामावर्तबाउट

@leftaroundabout यह एक मजाक है। विवरण भी सटीक नहीं है (जहाँ तक मुझे पता है)। यह कई ट्यूटोरियल है जो "git शाखाओं के साथ शुरू होता है जब आप महसूस करते हैं कि एक बार ..." और फिर इसके बाद एक जटिल डोमेन-विशिष्ट रूपक होता है, पर एक दरार है।
कोनराड रुडोल्फ

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

1
समानांतर में कई परिवर्तनों पर काम करने के लिए, मैं मानता हूँ कि यह थोड़ा दर्दनाक है, लेकिन सही समाधान ठंडे बस्ते में है, जो अगले एसवीएन रिलीज़ के लिए योजनाबद्ध है। और अधिकांश समय, यदि आप एक ही समय में कई बदलावों पर काम कर रहे हैं, (और विशेष रूप से यदि आप इसे लगातार कर रहे हैं!) जो एक व्यापक समस्या का प्रमाण है जिसे संगठन स्तर पर संबोधित किया जाना चाहिए, नए के साथ सक्षम नहीं उपकरण। (ऊपर देखें, "हमारा उत्पाद गलत काम को बहुत आसान बना देता है," और मानव कार्य स्विचिंग पर जोएल का क्लासिक लेख।)
मेसन व्हीलर

3
@KonradRudolph ट्रंक में वापस शाखाएं SVN के नवीनतम संस्करणों में ठीक काम करती हैं। यह कई वर्षों से लगातार बेहतर हो रहा है जहां अब यह बहुत अच्छा है।
एडम ब्रुक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.