2010-12-01 10 views
7

मैंने इस बारे में बहुत कुछ सुना है कि कैसे गिट ने फिर से डिजाइन किया है कि ब्रांचिंग कैसे काम करती है, और एसवीएन के ब्रांचिंग मॉडल को कैसे खराब किया जाता है।एसवीएन में ब्रांचिंग क्यों पर्याप्त नहीं है?

मैंने अधिक एसवीएन का उपयोग नहीं किया है, इसलिए मुझे कोई शाखा नहीं दिखने के बारे में कोई पूर्वकल्पना नहीं है। मैंने पहली बार गिट शाखाओं को देखा, और मैं इसे "प्राप्त" करता हूं।

एसवीएन शाखाओं के व्यावहारिक दोष क्या हैं?

वर्कफ़्लो के पीओवी, ब्रांचिंग रणनीति और शाखा प्रदर्शन (प्रतिबद्ध/चेकआउट/स्विच टाइम्स के मामले में) के उत्तर से प्रोत्साहित किया गया।

धन्यवाद, jrh

+3

मैं Git या किसी अन्य DVCS का उपयोग नहीं करते हैं, लेकिन यह http://hginit.com/00.html और यह http://kiln.stackexchange.com/questions/892/how-will-mercurial-be-better-than-subversion-when-one-user-refactors-code -और-एनो आपके लिए सहायक हो सकता है। – sharptooth

+0

कम से कम - एसवीएन ने मूल रूप से "शाखाओं" को अलग इकाई के रूप में डिजाइन नहीं किया है। और अब भी - कोई शाखा नहीं है, वहां डीआईआर/फाइलों की प्रतिलिपि है और कौन से संशोधन विलय किए गए हैं। बस Mercurial या गिट के साथ काम करने की कोशिश करें और आश्चर्यचकित करें कि शाखाओं के साथ काम कितना आसान हो सकता है। – zerkms

+0

मुझे आंतरिक के बारे में बहुत कुछ पता नहीं है, लेकिन मुझे लगता है कि एसवीएन में ब्रांचिंग सभी फाइलों को अन्य फाइलों पर 'कॉपी' करने का मामला है और गिट में यह कोड – jab

उत्तर

4

कुछ बातों का ध्यान करने के लिए

  1. सभी शाखाओं केंद्रीय भंडार में जमा हो जाती है आते हैं। यदि आप उस सर्वर से कनेक्ट नहीं हैं, या इसके साथ आपका कनेक्शन धीमा है, तो आप उन्हें तुरंत एक्सेस नहीं कर सकते हैं।
  2. सभी शाखाएं केंद्रीय भंडार में संग्रहीत हैं। इसका मतलब है कि वे सार्वजनिक हैं - टीम में कोई भी उन्हें देख सकता है। एक निजी शाखा रखने का कोई तरीका नहीं है जिसे किसी और के पास पहुंच नहीं है।
  3. काम करने वाले डीएजी में पर्याप्त जानकारी होती है ताकि आप यह पता लगा सकें कि कोड के आपके वर्तमान संस्करण में कौन से परिवर्तन शामिल हैं, जिसमें शाखाओं की किसी भी संख्या से परिवर्तन शामिल हैं। एसवीएन में, आईआईआरसी, यह svn:mergeinfo संपत्ति का उपयोग करके किया जाता है, जो अधिक जटिल IMHO है, और त्रुटि-प्रवण है क्योंकि कोई बदली हुई संपत्ति को स्वीकार करना भूल सकता है।
0

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

आप भी पूछ रहे हैं, तो यह स्पष्ट है कि तुम झूठ बोल नहीं कर रहे है और आप सबवर्सन इस्तेमाल नहीं किया है बहुत ज्यादा है क्योंकि इन संघर्षों के लगभग तुरंत दिखाई देते हैं :)

संबंधित मुद्दे