उन्नत तोड़फोड़ की तकनीक, मुझे क्या याद आ रही है?


10

मैंने लगभग 9 महीने पहले एसवीएन का उपयोग करना शुरू कर दिया था और यह कम से कम कहने के लिए गेम परिवर्तक था। हालांकि, मुझे लगता है कि मैं अभी भी थोड़ा खोया हुआ हूं। मुझे लगता है कि मेरे आवेदन के विकास में वास्तव में कदम उठाने के लिए मुझे और भी बहुत कुछ करने की आवश्यकता है।

उदाहरण के लिए

मैं किसी भी तरह के 'सब-रिपॉजिटरी' या किसी भी चीज़ में किसी भी अस्थिर / बड़े बदलाव को रोकने में सक्षम होना चाहूंगा। मुझे लग रहा है कि बड़े बदलाव मामूली बग फिक्स को बाधित कर रहे हैं जो काफी जरूरी हैं। अपूर्ण या टूटे हुए कोड को धक्का दिए बिना मैं एक सरल अद्यतन कैसे कर सकता हूं?


3
आप (आप SVN ठीक से उपयोग कर सकते हैं जांच करें कि आपके स्थानीय शाखाओं के लिए एचजी उपयोग करने पर विचार करना चाह सकते हैं इस )
OneOfOne

हा! आप मेधावी याद कर रहे हैं।
डेक्सटरडब्ल्यू

3
"उन्नत तोड़फोड़" एक ऑक्सीमोरन की तरह लगता है। यदि स्थानीय स्तर पर ही Git या Mercurial का उपयोग करें।
मैक्नील

जवाबों:


7

अपने उदाहरण को संबोधित करने के लिए, आपके पास ऐसा करने की तीन संभावनाएँ हैं:

  1. आप सिंगल फाइल कर सकते हैं। यदि आप रिपॉजिटरी तक पहुँचने के लिए एक आईडीई का उपयोग करते हैं, तो कमिट करने से पहले एकल फ़ाइलों का चयन करना या अचयनित करना सबसे अधिक संभावना है। कमांड लाइन पर आप टाइप svn commit file1 path1/file2 path2प्रतिबद्ध करने के लिए file1, path1 / करें 2 और Path2 के तहत हर बदलाव।
  2. आप विभिन्न कार्य प्रतियां बना सकते हैं। आप अपने मानक काम की नकल में अपनी बड़ी सुविधा पर काम करते हैं और तत्काल बग के बारे में जानकारी प्राप्त करते हैं। आप अपनी रिपॉजिटरी को एक अलग निर्देशिका में चेकआउट कर सकते हैं और इस दूसरी कार्य प्रति में बग को ठीक कर सकते हैं। आप उस घटक के साथ केवल एक उपनिर्देशिका भी देख सकते हैं जहां बग होता है। बगफिक्स के बाद आप बड़ी सुविधा पर अपना काम किए बिना अपनी दूसरी कार्य प्रतिलिपि में कर सकते हैं। EDIT: अन्ना लियर के जवाब में इस तरह का वर्णन किया गया है।
  3. आप अपनी सुविधा पर काम के लिए एक शाखा बनाते हैं। उसके लिए आप कॉपी कमांड का उपयोग करें। यदि आप अपने रिपॉजिटरी के लिए मानक-लेआउट का उपयोग करते हैं (ट्रंक, टैग और शाखाओं के साथ प्रोजेक्टनेम और उपनिर्देशिका के साथ निर्देशिकाएं, ट्रंक जिसमें परियोजना शामिल है) तो आप शाखा बनाने के लिए निम्नानुसार svn-copy-command का उपयोग कर सकते हैं svn copy svn://hostname/projectname/trunk svn://hostname/branches/branch-for-feature-X:। अब आप अपनी कार्यशील प्रतिलिपि को नए स्थान पर स्विच कर सकते हैं: svn स्विच svn switch svn://hostname/projectname/branches/branch-for-feature-X। यदि आप अपने वास्तविक परिवर्तनों के लिए बगफुटिंग मोड में स्विच करते हैं, तो अपनी कार्यशील प्रतिलिपि को वापस ट्रंक पर स्विच करें, बग को ठीक करें और कमिट करें, और कार्य की प्रतिलिपि को अपनी सुविधा-शाखा में वापस स्विच करें। यदि आप इस सुविधा को विकसित करने के लिए तैयार हैं तो आप इसे वापस ट्रंक में मर्ज कर सकते हैं।

वर्णित सरल मामले के लिए आप आमतौर पर # 1 का उपयोग करेंगे (मैं सबसे अधिक बार उपयोग करता हूं), कभी-कभी # 2। शाखाओं के साथ काम करना (केस # 3) अधिक जटिल है ( अधिक पढ़ें ), लेकिन अधिक चाल के लिए अनुमति देता है। लेकिन एक उप-प्रस्तावक के आपके विवरण से मेल खाने वाली शाखाएं।

आपके उदाहरण के अलावा मैं ज्यादा कुछ नहीं कह सकता। तोड़फोड़ के बारे में कई चीजें हैं, लेकिन मुझे नहीं पता कि आप पहले से ही क्या उपयोग करते हैं और आपको अपनी परियोजना के लिए क्या चाहिए। SVN के बारे में और अधिक जानने के लिए SVN- बुक एक बेहतरीन संसाधन है: http://svnbook.red-bean.com/


3
# 1 दृष्टिकोण के साथ समस्या यह है कि आप हमेशा पहले से नहीं जान सकते हैं कि आपकी नई सुविधा और बग-फिक्स दोनों एक ही फाइलों में परिवर्तन शामिल नहीं करेंगे। इस कारण से, मैं # 2 (प्रत्येक सुविधा या बग फिक्स के लिए व्यक्तिगत कार्य प्रतिलिपि) या # 3 (प्रत्येक सुविधा या बग फिक्स के लिए अलग-अलग शाखा) पुनः प्राप्त करूँगा। शाखाओं में सुविधा या बग फिक्स को ट्रंक से चेकआउट को प्रभावित किए बिना पूरा करने से पहले एक शाखा पर परिवर्तन किए जा सकते हैं।
स्टीफन सी। इस्पात

7

आप केवल एक कॉपी लेने और वहां अपने सभी बदलाव करने के बजाय अलग-अलग सैंडबॉक्स में कोड की जांच कर सकते हैं।

तो आपके पास एक फ़ोल्डर संरचना हो सकती है जो कुछ इस तरह से होती है:

D:\Dev\MajorFeature1
D:\Dev\Bug12345
D:\Dev\MajorFeature2

आदि।

उन सभी को आपके एसवीएन में उसी स्थान से चेक किया जा सकता है, जैसे http://mysvnrepo/trunk

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


4

क्या आपने सबवर्सन शाखाओं को देखा है ?

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

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

आपके डेवलपर्स के पास कई कार्यशील प्रतियां हैं - ट्रंक और कोई भी शाखाएं - या ट्रंक और svn switchकमांड के साथ एक विशेष शाखा के बीच स्वैप कर सकते हैं ।

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


3

मेरी वर्किंग कॉपी का वर्तमान आकार 10GB है, जिसमें 50.000 से अधिक फाइलें हैं। मेरे पास अलग-अलग शाखाओं के लिए कई प्रतियां हो सकती हैं, लेकिन नई कॉपी बनाने में थोड़ा समय लगता है!

जब एक जरूरी बग आता है, तो मैं आमतौर पर अपने सभी परिवर्तनों को एक पैच में सहेजता हूं, सब कुछ वापस करता हूं, बग पर काम करता हूं और प्रतिबद्ध करता हूं, फिर मेरे द्वारा सहेजे गए पैच को लागू करता हूं ... एक ताजा वर्किंग कॉपी प्राप्त करने की तुलना में बहुत आसान और तेज। अगर मुझे अक्सर ऐसा करने की आवश्यकता होती है, तो मेरे पास दो काम करने वाली प्रतियां होंगी: एक दीर्घकालिक बदलाव के लिए, दूसरा बग फिक्स के लिए।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.