2009-04-22 14 views
10

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

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

हम में से प्रत्येक के लिए एक न्यूनतम के रूप में परियोजना की जड़ बाहर की जाँच करता है तो हम सब पूरी निर्देशिका संरचना (ट्रंक, शाखाओं, विज्ञप्ति) की एक प्रति है। जितना ज्यादा मैं लोगों को यह जांचने के लिए शिक्षित कर सकता हूं कि वे ट्रंक के खिलाफ काम कर रहे हैं, वे दुर्घटना से रिलीज शाखा के खिलाफ काम कर सकते हैं।

ऐसा होने से रोकने का सबसे अच्छा तरीका क्या है? मैं रिलीज शाखा में सभी फाइलों को लॉक करने की सोच रहा हूं, क्या इससे मदद मिलेगी? इसमें और अन्य क्या विकल्प हैं?

उत्तर

3

ऐसा होने से रोकने के लिए अपना समय बर्बाद न करें। यदि कोई डेवलपर गलत शाखा में बदलाव करता है, तो ऐसा होने पर बस इसे वापस लाएं और डेवलपर को संवाद करने के लिए सुनिश्चित करें।

... hack hack hack ... on branch 
$ svn ci -m "Feature-1337 implemented" branch 
Revision 12345 

...oops... 

$ svn merge -c12345 branch trunk 
$ svn ci -m "moved Feature-1337 from branch to trunk" trunk 
$ svn merge -c-12345 branch branch 
$ svn ci -m "reverted Feature-1337 on branch. it's intended only for trunk" branch 
+3

तो काम के नुकसान को रोकने के लिए मैं संशोधन का नोट बनाउंगा, शाखा में किए गए परिवर्तनों को पकड़ने के लिए ट्रंक में विलय कर दूंगा, फिर शाखा फ़ोल्डर को पिछले संशोधन में वापस कर दूंगा? –

+1

फिर उस डेवलपर को बुरी तरह से हराया जिसने मुझे वह सब काम किया :) –

+0

हाँ, फीचर शाखा-> ट्रंक को मर्ज करें, अगर यह बकवास नहीं है और ट्रंक पर है। फिर उसे वापस रोल करने के लिए शाखा पर "रिवर्स मर्ज" करें। परिवर्तनों में जांचना न भूलें। फिर, सुराग-चार-चार लागू करें। – bendin

3

मुझे लगता है कि यह रिहाई शाखाओं 'को हटा दें और इसके बजाय उन्हें एक टैग बनाने के लिए, के रूप में है कि एक टैग का उद्देश्य है एक अच्छा अभ्यास हो जाएगा।

यह वास्तव में, इस समस्या का समाधान नहीं करता है, हालांकि यह उन दुर्घटनाओं की अधिक रोक सकती हैं जब से तुम एक टैग में काम कभी नहीं करना चाहिए। और मैं Brendin से सहमत हैं, यदि यह अभी भी होता है, उन परिवर्तनों को वापस, और डेवलपर :-)

6

क्यों हर किसी को पूरी SVN पदानुक्रम की जाँच कर रहा है लात? अगर हर किसी ने केवल उन ट्रंक/शाखाओं की जांच की है जो वे काम कर रहे हैं तो यह बहुत कम त्रुटि प्रवण होगा। आप उस शाखा में कुछ नहीं देख सकते जिसे आपने चेक नहीं किया है।

मैं दूसरा एक रिलीज टैग करने के लिए कर सकते हैं अभ्यास के रूप में Razzie द्वारा उल्लेख किया है।

4

मुझे सक्रिय रूप से इसे रोकने के लिए किसी अंतर्निहित तरीके से अवगत नहीं है। आप शायद इसे "रिपोजिटरी प्री-हुक" का उपयोग करके कर सकते हैं। यह एक छोटा कार्यक्रम है जो हर प्रतिबद्धता से पहले चलता है। यदि यह विफल रहता है, तो पूरी तरह प्रतिबद्धता विफल हो जाती है। सबवर्सन बुक में the chapter on hooks देखें।

आपकी हुक स्क्रिप्ट कम करने के बारे में पथ की जांच करेगी, और कुछ को अस्वीकार कर देगी। इससे मदद मिल सकती है: http://metacpan.org/pod/SVN::Hooks

यह कहा गया, क्या आप वाकई वाकई यह करना चाहते हैं?

हम रिलीज शाखाओं का भी उपयोग करते हैं, और हम करते हैं ocassionally उन चीजों की जांच करें, आमतौर पर उन ग्राहकों के लिए महत्वपूर्ण बगफिक्स जो नवीनतम संस्करण में अपग्रेड नहीं कर सकते हैं। क्या आपको यकीन है कि आपको कभी इसकी आवश्यकता नहीं होगी?

+0

प्रीकॉमिट हुक को अस्वीकार करने के कुछ उदाहरण: https://stackoverflow.com/questions/464384/svn-pre-commit-hook-for-avoiding-changes-to-tags-subdirectories – Vadzim

3

आप टैग के रूप में शाखाओं का उपयोग क्यों कर रहे हैं? मेरा सुझाव है:

  1. स्थानीय विकास मानकों (अर्थात प्रतिबद्ध नहीं है जहाँ हम प्रतिबद्ध करने के लिए नहीं आप से पूछना)
  2. सबवर्सन रिफ्रेशर प्रशिक्षण (अर्थात क्यों डेवलपर्स जाँच से बाहर कर रहे हैं पूरे रेपो?

    * repo 
        - tags 
        - trunk 
        - branches 
    

    हालांकि SVN बुक दानेदार के खिलाफ बोलता है:)

  3. क्या यह इरादा था

कहा जा रहा है, और यह सोचते हैं आप अपने भंडार पदानुक्रम रखी-आउट के रूप में होती हैं, के टैग संरचना का प्रयोग करें इस तरह से नियंत्रण, आप शाखाओं पर कुछ भी करने के लिए svn_access_file का उपयोग भी कर सकते हैं? उदाहरण के लिए:

[repo:/] 
@developers = rw 

[repo:/branches] 
@developers = r 
@rel_engineers = rw 

आप डेवलपर्स शाखाओं बनाने के लिए सक्षम होने के लिए चाहते हैं, तो आपको प्रत्येक शाखा में उतर करने के लिए (जिनमें से SVN बुक पूरे परिसर में विधि के खिलाफ की सलाह दे करने के लिए वापस हो जाता है होगा पहले स्थान पर)।