एसवीएन नए पेड़ संघर्षों को कैसे हल करें जब दो शाखाओं पर फ़ाइल को जोड़ा जाता है


95

जब कुछ शाखाओं का विलय (एसवीएन 1.6.1 का उपयोग करके) जहां दोनों शाखाओं पर एक फ़ाइल जोड़ी गई है (और फिर उन अलग शाखाओं में काम किया है) तो मुझे नए पेड़ संघर्षों में से एक मिल रहा है:

      C foo.txt
  >   local obstruction, incoming add upon merge

मुझे दोनों शाखाओं से परिवर्तन की आवश्यकता है, लेकिन वृक्ष संघर्ष मुझे सामान्य रूप से नहीं देता है। इनमें से कुछ संघर्ष हैं, और प्रत्येक शाखा पर एक ही फ़ाइल को हटाने के लिए, लेकिन वे हल करने के लिए सरल हैं।

मेरे द्वारा इस समस्या का समाधान कैसे किया जा सकता है? एसवीएन रेडबिन बुक (1.6 के लिए) इस स्थिति को कवर नहीं करती है।

जवाबों:


40

जैसा कि "ट्री कंफ्लिक्ट" डिज़ाइन दस्तावेज़ के पुराने संस्करण (2009) में उल्लेख किया गया था :

संस्करण फ़ाइल में जोड़ें के विलय से XFAIL संघर्ष

यह परीक्षण एक मर्ज करता है जो मौजूदा संस्करण फ़ाइल में इतिहास के बिना एक फ़ाइल जोड़ लाता है
यह ' local obstruction, incoming add upon merge' किस्म की फाइल पर एक वृक्ष संघर्ष होना चाहिए । R35341 में निश्चित उम्मीदें।

(इसे ClearCase में "दुष्ट जुड़वाँ" भी कहा जाता है):
एक फ़ाइल दो अलग-अलग शाखाओं में दो बार (यहां "जोड़ा" दो बार) बनाई जाती है, दो अलग-अलग तत्वों के लिए दो अलग-अलग इतिहास बनाते हैं, लेकिन एक ही नाम के साथ।

सैद्धांतिक समाधान गंतव्य शाखा ' B2' में उन फाइलों को मैन्युअल रूप से (बाहरी अंतर टूल के साथ) मर्ज करना है ।

आप अभी भी स्रोत शाखा पर काम कर रहे हैं, तो आदर्श परिदृश्य स्रोत शाखा से उस फ़ाइल को दूर करने के लिए किया जाएगा B1से, मर्ज वापस B2करने के लिए B1आदेश है कि फाइल पर दिखाई बनाने के लिए B1(आप करेंगे तो एक ही तत्व पर काम)।
यदि मर्ज बैक संभव नहीं है क्योंकि मर्ज केवल से होता B1है B2, तो प्रत्येक B1->B2मर्ज के लिए मैन्युअल मर्ज आवश्यक होगा ।


2
"ट्री संघर्ष" डिज़ाइन डॉक कड़ी है :(
whitey04

4
मजेदार बात यह है कि अगर दोनों जोड़ी गई फाइलें समान हैं तो भी वे परस्पर विरोधी के रूप में दिखाई देती हैं। इसे वास्तव में एक संघर्ष के रूप में चिह्नित नहीं किया जाना चाहिए।
संटीबैलर्स

1
@SantiBailors बहुत मजेदार मैं अभी मर रहा हूँ। मेरे पुराने दोस्त के लिए मर रहा है ...
शीतकालीन

163

मुझे एक पोस्ट मिला जिसके लिए एक समाधान सुझाया गया था । यह चलने वाला है:

svn resolve --accept working <YourPath>

जो ठीक के रूप में स्थानीय संस्करण फ़ाइलों का दावा करेगा।
आप इसे एकल फ़ाइल या संपूर्ण प्रोजेक्ट कैटलॉग के लिए चला सकते हैं।


2
धन्यवाद, यह भी हल करता है: C foo.txt> स्थानीय ऐड, अपडेट पर इनकमिंग ऐड
lazysoundsystem

5
धन्यवाद यह मेरे लिए भी काम किया है, लेकिन मुझे यह करना पड़ा: svn संकल्प
अस्वीकार

5
हाँ, आपको एक फ़ाइल नाम की आवश्यकता है। यह स्वीकार करता है '।' (वर्तमान निर्देशिका)। मुझे भी इस तरह से पुनरावृत्ति करने की आवश्यकता थी: "svn संकल्प - अस्वीकार्य कार्य - संक्षिप्त।" अपनी वर्किंग कॉपी के पक्ष में सब कुछ हल करता है (खतरनाक! आप ऐसा करने पर अन्य लोगों के बदलावों को दूर कर सकते हैं, हमेशा की तरह जब आप संघर्षों को हल कर रहे हैं)
हैरी वुड

मैं पेड़-संघर्ष वाली सभी फाइलों को सूचीबद्ध करने के लिए बनाए गए एक उपनाम का उपयोग करता हूं: alias mtc='stat | awk "BEGIN { FS=\" \" } /^.{6}C/ { print \$NF }"' फिर मैं इसे संकल्प कमांड के तर्क के रूप में उपयोग कर सकता हूं, जैसे: svn resolve --accept working $(mtc)
अर्ल जेनकिंस

1
वास्तव में आपको संसाधन भी निर्दिष्ट करने की आवश्यकता है जैसे: svn resolve --accept working path/index.html
टॉमाज़ कुटर

9

क्या होगा अगर आने वाले बदलाव आप चाहते हैं? मैं svn संकल्प को चलाने में असमर्थ हूँ - उनके-पूर्ण को स्वीकार करें

svn संकल्प - अस्वीकार आधार


4
मुझे लगता है कि मैंने सवाल गलत समझा है। 'आधार', वास्तव में, 'svs संकल्प' का उपयोग करते समय 'उनके-पूर्ण' के बराबर है, लेकिन यह आपकी समस्या का समाधान नहीं करता है। इसके बजाय मैंने क्या किया, इसे दो भागों में विभाजित करना था: 1) मेरी स्थानीय परस्पर विरोधी निर्देशिका (या फ़ाइल), 2) हटाएं। यह संघर्ष के बिना चलना चाहिए, और चूंकि 'आने वाले बदलाव आप चाहते हैं', मैं हटाए गए आइटमों की परवाह नहीं करूंगा
गेब्रियल एफटी गोम्स

3

मैं सिर्फ अपने आप को पूरी तरह से ऊपर उठाने की कोशिश कर रहा था ऊपर user619330 की सलाह का पालन करने की कोशिश कर रहा था। स्थिति यह थी: (1): मैंने अपनी प्रारंभिक शाखा, शाखा 1 पर काम करते हुए कुछ फाइलें जोड़ी थीं; (२) मैंने एक नई शाखा बनाई, आगे के विकास के लिए शाखा २, इसे ट्रंक से अलग कर दिया और फिर शाखा १ से मेरे बदलाव में विलय कर दिया (३) एक सहकर्मी ने शाखा १ से मेरी मॉड की नकल अपनी शाखा में कर ली, आगे और भी मॉड जोड़ दिए। और फिर वापस ट्रंक में विलय कर दिया गया; (४) मैं अब ट्रंक से नवीनतम परिवर्तनों को मेरी वर्तमान कार्य शाखा, शाखा २ में विलय करना चाहता था। यह svn 1.6.17 के साथ है।

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

नहीं। ब्रांच 2 की एक और कॉपी के अपडेट के परिणामस्वरूप फाइलों का पुराना संस्करण (प्री-ट्रंक मर्ज) हो गया। इसलिए अब मेरे पास शाखा 2 की दो अलग-अलग कार्यशील प्रतियां हैं, माना जाता है कि एक ही संस्करण में अपडेट की जाती है, फ़ाइलों के दो अलग-अलग संस्करणों के साथ, और दोनों ही जोर देते हैं कि वे पूरी तरह से अद्यतित हैं! ब्रांच 2 की क्लीन कॉपी की जाँच करने के परिणामस्वरूप फ़ाइलों का पुराना (प्री-ट्रंक) संस्करण बन गया। मैं मैन्युअल रूप से ट्रंक संस्करण में इसे अपडेट करता हूं और परिवर्तनों को प्रतिबद्ध करता हूं, अपनी पहली कार्य प्रतिलिपि पर वापस जाता हूं (जिससे मैंने ट्रंक परिवर्तन मूल रूप से सबमिट किया था), इसे अपडेट करने का प्रयास करें, और अब प्रश्न में फ़ाइलों पर एक चेकसम त्रुटि प्राप्त करें। प्रश्न में निर्देशिका को उड़ा दें, अपडेट के माध्यम से एक नया संस्करण प्राप्त करें, और अंत में मेरे पास ट्रंक परिवर्तनों के साथ शाखा 2 का एक अच्छा संस्करण होना चाहिए। मुझे उम्मीद है। कैवियट डेवलपर।

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