2009-06-17 10 views
51

मैं मैं क्या सोचा था कि एक साधारण परिदृश्य था - TortoiseSVN का उपयोग कर:SVN - शाखा ट्रंक में वापस मर्ज करने में असमर्थ - कई पेड़ संघर्ष

1) मैं एक आवेदन पत्र की एक शाखा (बी 2) बनाया (पर काम करने के कार्यान्वयन छवि sprites & जेएडब्ल्यूआर)।

2) परीक्षण & विकास ट्रंक पर सामान्य के रूप में चला गया।

3) मैं एक दो बार फिर से आधारित शाखा पिछले कुछ दिनों से अधिक की:

3.1) विलय ट्रंक (संशोधन की सीमा से) अपनी शाखा-बी 2 काम कर प्रतिलिपि करने के लिए, मर्ज के दौरान संघर्ष को हल करने ।

3.2) (शाखा-बी 2 परीक्षण के बाद), मैं पुनः-आधारित शाखा-बी 2 प्रतिबद्ध करता हूं।

यह सब मेरी अपेक्षा के अनुसार काम करता था। लेकिन शाखा को वापस ट्रंक में विलय करना मेरे साथ है:

4) शाखा-बी 2 में किए गए सभी अपडेट के बाद; मैं सुनिश्चित करता हूं कि मैं ट्रंक और शाखा-बी 2 पर एक एसवीएन अपडेट करता हूं।

5) फिर, मैं शाखा-बी 2 से ट्रंक में विलय (संशोधन की सीमा) को मर्ज करने का प्रयास करता हूं। हालांकि, ट्रंक में जोड़े गए किसी भी नई फ़ाइल के लिए, और बाद में जब मैंने इसे पुनर्जीवित किया तो शाखा-बी 2 में जोड़ा गया, मुझे पेड़-संघर्ष मिलता है। मुझे यकीन नहीं है कि इन संघर्षों को हल करने का उचित तरीका क्या है।

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

मैंने क्या गलत किया, और मैं इसे कैसे ठीक करूं?

उत्तर

71

लगता है जैसे आप प्री-1.5 मर्ज शैली का उपयोग कर रहे हैं और शाखा को ट्रंक में फिर से भरने की कोशिश कर रहे हैं। उस स्थिति में, आप सबसे पहले यह सुनिश्चित करना चाहते हैं कि सभी ट्रंक परिवर्तन शाखा में विलय कर दिए गए हैं, और उसके बाद शाखा को एक कार्यशील प्रतिलिपि में विलय करने के बजाय जो ट्रंक को इंगित करता है, आप "ट्रंक से विलय करना चाहते हैं ट्रंक को इंगित करने वाली कार्यशील प्रतिलिपि के साथ @ हेड टू ब्रांच @ हेड "। संक्षेप में:

"मुझे सभी परिवर्तन दें जो मुझे शाखा के समान ट्रंक बनाने की आवश्यकता होगी"।

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

समझ में आओ? :)

+0

यह समझ में आता है - यह एएम में पहली बार एक शॉट देगा, जिज्ञासा से बाहर और भविष्य में स्वच्छता की इच्छा, 1.5-मर्ज शैली के बाद क्या है? –

+2

1.5 और बाद में आप पहले विलय में संशोधन श्रेणी को छोड़ सकते हैं और दूसरे मर्ज के लिए "svn merge --reintegrate Branch" जैसे कुछ का उपयोग कर सकते हैं (टीएसवीएन गुई विनिर्देशों को याद नहीं कर सकते हैं)। डाउनसाइड पर, फिर से बढ़ने के बाद आपको फिर से शाखा करना होगा क्योंकि रीइन्ग्रेगेट मर्जइन्फो के लिए कुछ मजाकिया है। – Rytmis

+52

धन्यवाद @Rytmis, मैं बस इसे खींचने में कामयाब रहा, लेकिन मैं कछुए उपयोगकर्ताओं के लिए एक अनुवाद की पेशकश करना चाहता हूं। 1) अपनी कार्यशील प्रतिलिपि को शाखा में स्विच करें (यदि यह पहले से नहीं है) 2) कार्यशील प्रतिलिपि पर राइट-क्लिक करें, TortoiseSVN> मर्ज करें> "संशोधनों की एक श्रृंखला मर्ज करें" पर क्लिक करें, अगला 3) URL = ट्रंक से विलय करने के लिए URL , अगला क्लिक करें, मर्ज करें 4) ट्रंक पर कार्यशील प्रतिलिपि स्विच करें 5) कार्यशील प्रतिलिपि पर क्लिक करें, TortoiseSVN> मर्ज करें> "दो अलग-अलग पेड़ मर्ज करें" पर क्लिक करें, अगला 6) से: ट्रंक (HEAD संशोधन का उपयोग करें) करने के लिए: शाखा (HEAD संशोधन का उपयोग करें) 7) अगला क्लिक करें, मर्ज करें। 8) अपनी कार्यशील प्रतिलिपि प्रतिबद्ध करें। – mikesigs

3

मैंने एक ही समस्या की जांच की। यह कछुए एसवीएन 1.6.5 में "फीचर" है। TortoiseSVN 1.5 हमारे रिपोजिटॉटी (एसवीएन 1.5) के साथ ठीक काम करता है। टोर्टोइज एसवीएन 1.6.5 जब रीबेजिंग मुख्य लाइन से फ़ाइलों को नई के रूप में जोड़ता है (मर्ज-इतिहास सहेजने के बिना)।
और उन फ़ाइलों को मुख्य लाइन के साथ विवादित करने के रूप में शाखा resuls को दोबारा बदलना।

मैंने टोर्टोइज एसवीएन 1.6 "पुनर्जन्म शाखा" की सुविधा का उपयोग कर समस्या हल की। यह विशेष रूप से फीचर-शाखाओं के लिए तैयार है।

- एलेक्सी कोर्सन

+0

धन्यवाद। इस "पेड़ संघर्ष" मुद्दे के बारे में एसओ पर सभी चर्चाओं में से, इसने मुझे इसे ठीक से ठीक करने में मदद की। –

1

मैं सच में समझ नहीं सकता कैसे ऊपर समाधान इतना काम करने के लिए अपने काम के आसपास अलग है था। सबसे पहले मैंने सुनिश्चित किया कि शाखा में ट्रंक से सभी बदलाव शामिल हैं।

1) मुझे ट्रंक की ताजा प्रति मिली है। 2) मैंने कछुए svn निर्यात का उपयोग कर शाखा को एक अस्थायी स्थान पर निर्यात किया। 3) मैंने पूरे शाखा पेड़ को ट्रंक पर कॉपी करने और सभी फ़ाइलों को ओवरराइट करने के लिए विंडोज एक्सप्लोरर का उपयोग किया 4) मैंने कछुआ पर परिवर्तन कमांड के लिए चेक का इस्तेमाल किया और सभी अनियंत्रित फाइलों को चेकबॉक्स शामिल किया। 5) मैंने सभी फाइलों का चयन किया और जोड़ा क्लिक किया।

आपको उन समाधानों का उपयोग करना चाहिए जो निर्मित नहीं किए गए हैं, इसलिए अनियंत्रित फ़ाइलों में आउटपुट शामिल नहीं है।

मैं जब तक हम 1.5+

1

संशोधन चुनने के लिए उन्नयन, जबकि विकल्प का चयन TortoiseSVN का उपयोग कर "rivisions की एक सीमा मर्ज करें" मर्ज करने के लिए नहीं कर सकते प्रतीक्षा करें। यह प्रत्येक मर्ज ऑपरेशन के लिए फिर से आने वाली फ़ाइलों के लिए वृक्ष संघर्षों को रोक देगा।

1

यहां @Rytmis उत्तर में योगदान करने के लिए थोड़ी अधिक जानकारी है जो इसे सीधे रखने में मेरी सहायता करती है।

वास्तव में एक शाखा या टैग की तरह ट्रंक बनाने का उच्च स्तर कदम: ट्रंक से

  1. चेकआउट।
  2. ट्रंक की कार्यशील प्रति का उपयोग करके, ट्रंक से शाखा/टैग में विलय करें।
  3. प्रतिबद्ध।

उदाहरण 'SVN' कमांड लाइन आदेश:

svn checkout <trunk url> 
cd trunk 
svn merge <trunk url> <branch/tag url> 
svn commit -m "<message>" 
+0

यह एक "2-यूआरएल" विलय है, जो दस्तावेज़ों के अनुसार, दो को मर्ज करने के लिए है एक (काम करने वाली निर्देशिका) में शाखाएं। इसलिए दो यूआरएल स्रोत हैं, और गंतव्य कामकाजी डीआईआर है। शायद ओपी क्या चाहता था। –

0

मुझे लगता है कि मुझे लगता है कि समस्या हल हो। 1. राइट क्लिक करें "शाखा" जिसे आपने विलय किया था। 2. कछुए एसवीएन पर क्लिक करें >> मर्ज करें 3. "संशोधन की एक श्रृंखला मर्ज करें" और अगला 4. !!! "रिवर्स मर्ज करें" की जांच करें !!! , यूआरएल "शाखा" से मर्ज करने के लिए, विशिष्ट श्रेणी "हाल ही में संशोधन विलय कर दिया", और अगला 5. अगला 6. SVN commite

कि मैं ट्रंक में शाखा से विलय कर सकते हैं के बाद।

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