svn - सबस - मुंबई में घूमने वाली जगह




सबवर्सन-ट्रंक वास्तव में मुख्य विकास के लिए सबसे अच्छी जगह है? (7)

एसवीएन में, trunk मुख्य विकास के लिए अनुशंसित जगह है और मैं अपने सभी परियोजनाओं के लिए इस सम्मेलन का उपयोग करता हूं हालांकि, इसका मतलब है कि ट्रंक कभी-कभी अस्थिर या टूटा हुआ होता है उदाहरण के लिए ऐसा होता है जब

  • मैं गलती से कुछ काम करता हूं
  • जब ट्रंक केवल एसवीएन काम करता है के कारण टूटी हुई है। कैनोनिकल उदाहरण फ़ाइल का नाम बदलता है - आपको पहले किसी भी फाइल का नाम देना चाहिए और बाद में किसी भी अन्य संशोधन करना चाहिए; हालांकि, फ़ाइल नाम बदलने के लिए नाम स्थान या कक्षा नाम परिवर्तन को प्रतिबिंबित करने के लिए कोड रिफ़ैक्चरिंग की आवश्यकता हो सकती है, इसलिए आपको मूल रूप से दो चरणों में एक तर्क तर्क ऑपरेशन करने की आवश्यकता होती है। और बिल्ड 1 और 2 चरण के बीच टूटा हुआ है

मैं कल्पना कर सकता हूं कि गलती से कुछ टीम को कम करने के लिए उपकरण (उदाहरण के लिए टीमसिटी और देरी से चूक) हो सकता है, लेकिन क्या आप वास्तव में दूसरी समस्या को दूर कर सकते हैं? यदि नहीं, तो क्या कुछ शाखाओं जैसे " /branch/dev " पर "जंगली विकास" करना बेहतर नहीं होगा और केवल तंग में विलय हो सकता है जब निर्माण काफी ठोस होता है?


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

एसवीएन बुक के इस अध्याय को पढ़ें: http://svnbook.red-bean.com/nightly/en/svn.branchmerge.html


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

वैसे, जब भी आप एक फ़ाइल का नाम बदलते हैं, तब भी आपको उसे संपादित करने की अनुमति है। मेरे पास हर व़क्त करने को यही काम है।


मैंने अल्पकालिक विकास शाखाओं को बनाने में आसान बनाने के लिए कुछ शैल-स्क्रिप्ट बनाए हैं:

# Create new branch and switch to it
function svn_bswitch()
{
   branch=$1; shift
   msg="$1"; shift

   URL=$(svn info . | sed -ne '[email protected]: \(.*\)@\[email protected]')
   REPO=$(svn info . | sed -ne '[email protected] Root: \(.*\)@\[email protected]')
   BRANCH_URL=$REPO/branch/$branch

   svn copy $URL $BRANCH_URL -m "$msg"
}


# Switch to a branch or tag
function svn_switch()
{
  d=$1; shift
  REPO=$(svn info . | sed -ne '[email protected] Root: \(.*\)@\[email protected]')
  URL=$REPO/$d
  svn switch $URL
}

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

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

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


जब एक अच्छा पुराने "स्थिर ट्रंक, शाखा में देव" प्रक्रिया एक मुद्दा बन जाता है:

आप एक वेब एप्लिकेशन विकसित कर रहे हैं जो बहुत सारे लाइव, संभवतः उपयोगकर्ता-योगदान, डेटा पर निर्भर करता है। आप किसी कारण से डेटाबेस बैकेंड (-एस) या बाहरी फाइल सिस्टम का एक और उदाहरण नहीं बना सकते हैं जिस पर आप निर्भर हैं। (उदाहरण के लिए, आपके वातावरण में डेटा मॉडल माइग्रेशन की कमी हो सकती है)

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

फिर मर्ज चरण आता है - और उसके बाद कोई भी अब कछुओं एसएसवीएन का इस्तेमाल नहीं करना चाहता है


नॉप ट्रंक सबसे अच्छी जगह नहीं है हमारे संगठन में हम हमेशा इस दृष्टिकोण का पालन करते हैं: ट्रंक में रिलीज कोड होता है, इसलिए यह हमेशा संकलित करता है प्रत्येक रिलीज / मील का पत्थर के साथ हम एक नई शाखा खोलते हैं जब भी कोई डेवलपर एक आइटम का मालिक होता है, तो वह इस रिलीज शाखा में एक नई शाखा बनाता है और इसे एक रिलीज ब्रैकेट में जांचने के बाद ही विलीन करता है। रिलीज शाखा सिस्टम परीक्षण के बाद ट्रंक में विलय कर दिया जाता है।

संलग्न छवि एक कच्चा प्रतिनिधित्व है वैकल्पिक पाठ http://i36.tinypic.com/2jvbs8.jpg


मैं एससीएम सर्वोत्तम प्रथाओं पर इस लेख को पढ़ने की सिफारिश करेगा

आलेख से निकाले गए:

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

संपादित करें: मैं एससीएम पैटर्न को पढ़ने की भी सिफारिश करूंगा







branching-and-merging