2009-06-22 13 views
10

विक्रेता शाखाओं का उपयोग करने के लिए उपवर्तन स्थापित करते समय सबसे अच्छा अभ्यास क्या है? हमारी रिपोजिटरी अलग-अलग परियोजनाओं के लिए संरचित है। हम subversion 1.6.2 और tortoiseSVN 1.6.3 का उपयोग कर रहे हैं।सबवर्जन विक्रेता शाखाएं

उदाहरण फ़ोल्डर संरचना:

Project1 
/tags 
/branches 
/trunk 

Project2 
/tags 
/branches 
/trunk 
  1. मैं विक्रेताओं कहाँ फ़ोल्डर रखा और यह क्या संरचना होनी चाहिए?
  2. क्या tortoisesvn क्लाइंट का उपयोग कर कोई उदाहरण है?

उत्तर

13

सबवर्जन मैनुअल में विशेष रूप से Vendor Branches पर एक अनुभाग है।

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

सॉफ़्टवेयर में आपके संशोधन के लिए, "(सॉफ्टवेयर-संस्करण)" को अपनी परियोजना में ".../repos/(my-project)/trunk/(software)" जैसी शाखा बनाएं। जब आप तृतीय पक्ष स्रोत के अगले संस्करण में अपग्रेड करते हैं, तो "ट्रंक/(सॉफ़्टवेयर)" की कार्यशील प्रति में "(सॉफ़्टवेयर-संस्करण)" और "(अगला संस्करण)" के बीच अंतर को मर्ज करने के लिए svn को बताएं। यह सभी बाहरी परिवर्तनों को ट्रंक में खींचता है, जो प्रोजेक्ट स्रोत को अच्छी तरह से अपग्रेड करता है। शाखा और परियोजना को सामान्य के रूप में टैग करें।

सबवर्जन डिस्ट्रो में "svn_load_dirs.pl" नामक एक पर्ल स्क्रिप्ट शामिल है, जो "विक्रेता" प्रोजेक्ट को अपग्रेड करते समय मदद कर सकती है। यह हटाए गए, जोड़े गए, और नाम बदलकर फ़ाइलों को खोजता है और आपकी कार्यशील प्रतिलिपि को संशोधित करता है, उदाहरण के लिए "(वर्तमान)", उपयुक्त के रूप में।

+11

उस डरावनी एसवीएन पुस्तक में सबकुछ है, है ना? – Travis

0

आप जो कहते हैं वह सत्य है लेकिन व्यवहार में आपको एक बहुत बड़ी समस्या दिखाई देगी।

जब आप विक्रेता को अपने उपवर्तन भंडार में आयात करते हैं (और विक्रेता प्रोजेक्ट को मानें तो यह एक बड़ा है, हम apache httpd 2.2 की तरह कहते हैं) आप पाएंगे कि svn आयात करना असंभव है: प्रत्येक निर्देशिका पर गुणों को अनदेखा करें तथ्य यह है कि कोई भी निर्यात उपकरण मौजूद नहीं है जो केवल वेबडावी इंटरफ़ेस तक पहुंच के साथ ऐसा कर सकता है (svn व्यवस्थापक उपकरण है जो svn props निर्यात कर सकता है लेकिन विक्रेता भंडार पर सीधे पहुंच की आवश्यकता है)।

तो जब आप एक विक्रेता प्रोजेक्ट आयात करते हैं तो आपको पहले विक्रेता एसवीएन रिपोजिटरी से मूल निर्यात करना होगा और फ़ाइलों को अपने svn में आयात करने के बाद आप परियोजना के अंदर प्रत्येक निर्देशिका के लिए मैन्युअल रूप से svn props सेट करेंगे। एक बहुत ही पेंटफुल विधि लेकिन केवल एक ही है यदि आप वास्तव में विक्रेता परियोजना को संशोधित करना चाहते हैं और उनके संशोधनों को जारी रखना चाहते हैं।

+0

जिस तरह से पर्ल स्क्रिप्ट "svn_load_dirs" कहा जाता है।pl "पूरी तरह से अक्षम है क्योंकि यह svn props के बारे में नहीं जानता है। इस तरह की एक स्क्रिप्ट चलाने के बाद आपको मैन्युअल रूप से svn props सेट करना होगा और फिर से प्रतिबद्ध करना होगा और केवल इस चरण के बाद आप टैग संस्करण प्रतिलिपि बना सकते हैं। अच्छा नहीं है ? – gigiduru

3

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

लिखने के समय नए दस्तावेज को अंतिम रूप दिया जा रहा है, यह देखने के लिए कि यह एसवीएन बुक के अध्याय 4 के विक्रेता शाखा अनुभाग को देखता है: http://svnbook.red-bean.com/nightly/en/svn.advanced.vendorbr.html। कृपया उस पृष्ठ के शीर्ष पर चेतावनियों को नोट करें कि दस्तावेज़ीकरण प्रगति पर काम कर रहा है।

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