2009-02-24 8 views
51

मैं एक सॉफ्टवेयर अनुप्रयोग है और मैं संस्करण 2.0 एक महत्वपूर्ण मील का पत्थर पर पहुंच जाते हैं,।एक काम की नकल क्या है और क्या कछुआ SVN में मेरे लिए करते हैं "स्विचिंग" करता है?

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

कछुए एसवीएन सहायता फ़ाइल के माध्यम से पढ़ने के बाद, यह मुझे सूचित करता है कि मैं अपनी "काम करने वाली प्रति" को नव निर्मित शाखा में बदल सकता हूं।

इसका क्या मतलब है?

वर्तमान में, मेरे पास है:

/परियोजना/ट्रंक/
/परियोजना/टैग/
/परियोजना/शाखाएं/

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

मैं क्यों/branches/Experiemental-v3.0/ पर नहीं जाऊंगा और यदि मैं चाहता हूं तो मेरा काम वहां करें?

क्या कोई "वर्किंग कॉपी" और "स्विचिंग" की अवधारणा को समझा सकता है? मैं क्या खो रहा हूँ? क्या आम तौर पर लोगों को पूरी रिपोजिटरी की जांच नहीं होती है, है ना?

उत्तर

41

एक काम कर प्रति कॉपी आप अपने कार्य क्षेत्र के लिए बाहर की जाँच कर ली है। इससे कोई फर्क नहीं पड़ता कि यह शाखा है या ट्रंक से है। यह वही है जो आप काम कर रहे हैं।

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

तो कामकाजी प्रति आपका चेकआउट है, हालांकि यह प्राप्त किया गया था।

स्विचिंग सिर्फ आपकी शाखा की प्रतिलिपि बनाने वाली शाखा बदल रही है। इसके बारे में सोचें कि रिपॉजिटरी में पॉइंटर बदलना जहां आपका काम चल जाएगा। शाखा से आपके कार्य क्षेत्र में किसी भी अंतर को प्राप्त करने की सहायता से।

+4

लेकिन यह सवाल का जवाब नहीं देता है, राजा पूछ रहा है कि क्या आम तौर पर लोगों के पास सभी फ़ोल्डर्स चेकआउट नहीं होते हैं? जैसे कि मैं/branches/Experiemental-v3.0/ फ़ोल्डर में जाता हूं और कुछ बदलाव करता हूं, इस बदलाव को इस फ़ोल्डर में प्रतिबद्धता पर प्रतिबद्ध नहीं किया जाएगा? जो कामकाजी प्रति और "स्विच" निर्देशिका के बारे में परवाह करता है। आप जो कह रहे हैं उसका मतलब है कि उपयोगकर्ता के पास एक समय में केवल एक कॉपी की जांच की जाती है। – shabby

+0

सभी फ़ोल्डर्स चेक-आउट होने का मतलब यह नहीं है कि आपके पास svn repo की प्रतिकृति है। मेरे पास एक फ़ोल्डर हो सकता है जो किसी शाखा से चेकआउट किया गया था, लेकिन यहां कोई बदलाव करने पर, यदि मैं एक एसवीएन स्विच करता हूं तो मैं एक अलग शाखा में काम सबमिट कर सकता हूं। – mtk

+5

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

1

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

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

डेव

3

कार्य प्रतिलिपि कोड का आपके प्रति है, कि तुम बाहर की जाँच कर ली। आम तौर पर, आप केवल/परियोजना/ट्रंक/चेक रिपोजिटरी की पूरी संरचना नहीं देखेंगे। स्विचिंग आपकी कामकाजी प्रतिलिपि की जड़ बदल रही है। एसवीएन के साथ काम करने का तरीका यह नहीं है कि इसे कैसे किया जाना चाहिए।

1

आपने पूरे प्रोजेक्ट पेड़ की जांच की है - शायद यह वही नहीं है जो आप चाहते हैं। ट्रंक कार्य के लिए, प्रोजेक्ट रूट से नहीं, 'ट्रंक' पर रूट की गई एक प्रति देखें। इसी तरह, शाखा के काम के लिए केवल वही शाखा देखें जो आप चाहते हैं।

17

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

आपके पास रिपोजिटरी के कई हिस्सों की जांच हो सकती है जैसा आपको चाहिए। तो आपके पास 'ट्रंक' नामक एक फ़ोल्डर हो सकता है जो केवल ट्रंक की एक कार्यशील प्रति है, एक और 'संस्करण 2' जो आपकी शाखा की एक कार्यशील प्रति होगी। इस तरह, बनाए गए किसी भी अतिरिक्त टैग को चेक आउट नहीं किया जाता है।

या आपके पास 'प्रोजेक्ट' नामक एक चेकआउट हो सकता है, और यदि यह मूल रूप से ट्रंक को इंगित कर रहा है, तो आप इसे शाखाओं या टैग में से किसी एक पर स्विच कर सकते हैं - यह मूल चेकआउट का पुनः उपयोग करने का एक तरीका है ताकि आप ' टी सब कुछ फिर से प्राप्त करने के लिए है।

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

+0

आईएमएचओ यह स्वीकार्य उत्तर होना चाहिए। यह वर्तमान में स्वीकार किए गए एक से बेहतर तरीका है, क्योंकि यह वास्तव में प्रश्न को संबोधित करता है। –