2009-10-20 14 views
20

मैंने एक सॉफ्टवेयर प्रोजेक्ट लिया और टोर्टोइस एसवीएन का उपयोग करके एसवीएन (Assembla पर) के तहत सब कुछ डालने का फैसला किया। ट्रंक रूट के नीचे है। तो ट्रंक में पूरा एप्लिकेशन शामिल था (जिसे मैंने 1.0 टैग किया था)। मेरी पहली बड़ी सुविधा के लिए मैंने "dev" नामक फीचर शाखा बनाई।एसवीएन शाखा/पेड़ संघर्ष को 'ठीक' कैसे करें?

मैं ट्रंक शाखा में बिना किसी समस्या के देव शाखा में परिवर्तन विलय कर सकता हूं (क्योंकि मैं छोटे बग फिक्स कर रहा था)। एक बार मेरी सुविधा पूरी होने के बाद, मैंने ट्रंक शाखा में वापस विलय किया। सब कुछ इस बिंदु तक खत्म हो रहा था। रूट के तहत नए कोड ने नई सुविधा को सही तरीके से दिखाया। लेकिन फिर मैंने एक प्रतिबद्धता (विलय के परिणामस्वरूप) किया और अब हर बार जब मैं रूट से या देव शाखा से विलय करने का प्रयास करता हूं, तो एसवीएन कई फाइलों पर "वृक्ष संघर्ष" के बारे में शिकायत करता है। यहां तक ​​कि फाइलें जिन्हें मैंने मर्ज के बाद स्पर्श नहीं किया था। मैंने सफलता के बिना संघर्षों को हल करने की कोशिश की।

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

इस समस्या को ठीक करने का सबसे अच्छा तरीका क्या होगा? क्या रूट तरीका ट्रंक में सभी नवीनतम फाइलों को फ़ाइल के "निश्चित" संस्करण के रूप में टैग करने का कोई तरीका है?


[संपादित करें] अधिक जानकारी

  1. हाँ, 'मुख्य' और 'ट्रंक' एक ही बात है। मैंने अपने प्रश्न को स्पष्ट किया है
  2. जब आप फीचर शाखा से वापस विलय करते हैं, तो क्या आपने पहले ट्रंक से नवीनतम ट्रंक परिवर्तनों को अपनाने के लिए एक और विलय किया था? "हां। ट्रंक अद्यतित था। और देव शाखा में ट्रंक से सभी परिवर्तन
  3. "सब कुछ करने पर खराब हो गया": मेरा मतलब यह था कि प्रतिबद्धता ठीक थी, लेकिन जैसे ही मैंने ट्रंक/ट्रंक से विलय करना शुरू किया, एसवीएन ने शिकायत की ' पेड़ संघर्ष '।
  4. मैं 200 से अधिक पेड़ संघर्ष किया है। है एक कमांड "सभी को स्वीकार" मैं के लिए तो क्या देख रहा हूँ

[संपादित करें] elhoim समाधान मेरी समस्या को ठीक नहीं किया। हालांकि, वह एसवीएन संस्करण के मुद्दों के साथ सही था। वर्तमान में (200 9 -108), असेंबला एसवीएन v1.5.1 का उपयोग कर रहा है और मेरा कछुआ एसवीएन v1.6 था। इसलिए यही कारण था कि मुझे इतना पेड़ संघर्ष हो रहा था। मैंने elhoim के लिंक द्वारा प्रदान किए गए समाधान का उपयोग करने की कोशिश की और यह काम नहीं किया (मैंने हेड-टू-हेड विलय की कोशिश करने से पहले कई बार मर्ज करने का प्रयास किया। कुछ फाइलें उस वजह से मूल शाखा में नहीं ले गईं)।

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

+0

@eldimo: जब आप 'देव' में 'मुख्य' विलय करते हैं, तो ट्रंक के समान 'मुख्य' शाखा थी? या क्या 'मुख्य' में बैठे बदलाव हुए थे कि ट्रंक अभी तक नहीं देखा गया था? – dls

+1

@ डीएलएस: मुझे लगता है कि वह उसी शाखा का अर्थ "मुख्य" और "ट्रंक" शब्द का उपयोग करता है। –

+0

@eldimo: बेहतर स्पष्टता के लिए कुछ विवरण चाहिए: 1. जब आप फीचर शाखा से वापस विलय करते हैं, तो क्या आपने सबसे पहले ट्रंक से नवीनतम ट्रंक परिवर्तनों को अपनाने के लिए एक और विलय किया था? 2. क्या मतलब है "काम करने के लिए सब कुछ खराब हो गया"? क्या प्रतिबद्धता के दौरान आपको मिली त्रुटि संदेश की आपूर्ति करना संभव है? –

उत्तर

6

ऐसा लगता है कि ट्रंक पर निर्देशिका संरचना के स्तर पर किए गए कुछ बदलावों को ट्रंक में वापस विलय करने का प्रयास करने से पहले देव शाखा में अवशोषित नहीं किया गया था। इससे आपके मामले में वृक्ष संघर्ष हो सकता है।

मुझे एसवीएन पुस्तक का यह अनुभाग बहुत उपयोगी पाया गया है और इसमें आपकी तरह की स्थिति को हल करने के तरीके शामिल हैं। उम्मीद है की यह मदद करेगा। http://svnbook.red-bean.com/nightly/en/svn.tour.treeconflicts.html

[संपादित करें] अतिरिक्त जानकारी:


आप पहले से ही SVN का समाधान चलाने कार्यक्षेत्र जहां आप वास्तव में अधिलेखित कर दिया/परस्पर विरोधी संस्करणों का समाधान पर? फाइलें/फ़ोल्डर अभी भी आपके समस्याग्रस्त कार्यक्षेत्र पर "विवादित" चिह्नित हो सकते हैं (वह एक जहां आपने वास्तव में विलय किया था) - तो एक बार जब आप उन लोगों को देख चुके हैं और हाथों से संघर्ष का समाधान कर चुके हैं, तो आप svn "हल" चला सकते हैं। मैं अपने विलय के लिए सबवर्जन कमांड लाइन क्लाइंट का उपयोग करता हूं - लेकिन मैंने सत्यापित किया है और यह विकल्प कछुआ पर भी उपलब्ध है। इसे संघर्ष की स्थिति को खटखटाया जाना चाहिए और आपको आगे बढ़ने देना चाहिए। सौभाग्य।

5

सामान्य रूप से, एसवीएन का विलय समर्थन केवल एक विशेषता शाखा का उपयोग कर का उपयोग कर संभाल सकता है। यही है, आप इसमें काम करते हैं और इसमें ट्रंक से परिवर्तन मर्ज करते हैं, और उसके बाद svn merge --reintegrate का उपयोग करके इसे ट्रंक में वापस करने के लिए उपयोग करते हैं।

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

यह सही नहीं है। this post देखें जब से वर्तमान विलय अर्थशास्त्र अधिक विस्तृत जानकारी के लिए पेश किया गया था।

इसके अलावा, शाखा के अलावा अन्य प्रयोजनों के लिए svn cp या svn mv के किसी भी उपयोग से सावधान और विलय - अगर आप ऐसा करते हैं, आप (दोनों शाखा और ट्रंक पर यदि आवश्यकता हुई) नकली svn:merge गुण वे बनाने हटाना होगा पुनर्जन्म चलाने से पहले या यह असफल हो जाएगा पेड़ संघर्ष संदेश होगा।

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

+1

हमें 1.7 के बाद से यह समस्या हो रही है और मुझे एसवीएन रेडबुक लाइव डॉक में फुटनोट दिखाई देता है कि 1.5 और 1.6 की यह 'हिट या मिस' कार्यक्षमता कभी-कभी स्पष्ट और इसे आपके लिए ठीक करने के लिए खोजती है। तो पेड़ संघर्ष के साथ एक बार एक फीचर शाखा (या सीआई रिलीज शाखा, हमारे मामले में) विलय करने के बाद यह एकमात्र असली समाधान लगता है, सबसे अच्छी बात यह है कि मूल शाखा को उड़ा दिया जाता है और एक नया निर्माण होता है। .. लेकिन रुको, वह सीआई के लिए काम नहीं करेगा! क्या करें?! –

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