2009-02-21 14 views
6

मेरे पास उपवर्तन नियंत्रण के तहत एक निर्देशिका है। मैंने विलय सामग्री का परीक्षण करने के लिए बस एक शाखा बनाई। मैंने ट्रंक में संशोधित लाइन एक्स को "एबीसी" के रूप में लिया और उसी लाइन एक्स को अपनी शाखा में "डीफ़" के रूप में संशोधित किया।एसवीएन विलय प्रश्न

फिर, शाखा काम कर dir से मैंने किया:

svn merge branchURL trunkURL . 

ऐसा नहीं है कि लाइन नंबर पर "abc" के रूप में सामग्री के साथ फ़ाइल अद्यतन, यानी यह मुझे एक ही पंक्ति संख्या पर कोई विरोध नहीं दिया svn update ने मुझे दिया होगा अगर मैंने इसे एक ही कामकाजी डीआईआर में किया था और किसी ने भंडार में "डीफ़" किया था।

तो क्या svn merge विलय करते समय सामग्री को प्रतिस्थापित करता है और कोई विवाद नहीं लाता है?

और यदि ऐसा है तो मुख्य ट्रंक से प्रोज डीआईआर को बाहर निकालने का बहुत ही कारण बेकार होगा जब कोई ट्रंक और शाखा में दोनों बदलावों को रखने के लिए एक तरीके से विलय नहीं कर सकता है।

+0

तो आप 1) ब्रांडेड 2) ट्रंक पर संशोधित लाइन एक्स "एबीसी" 3) शाखा में स्विच 4) संशोधित लाइन एक्स शाखा पर "डीफ" करने के लिए संशोधित लाइन) विलय? इसे "एबीसी" में संशोधित करने से पहले लाइन एक्स की सामग्री क्या थी? –

+0

मुझे लगता है कि मेरे कार्यालय बी/डब्ल्यू में मेरे क्लाइंट एसवीएन और सर्वर एसवीएन में एक संस्करण अंतर होगा, क्योंकि मुझे याद है कि मैंने हाल ही में अपने svn संस्करण को 1.5 तक अपग्रेड किया है और यह सर्वर पर नहीं हुआ है जहां रिपोज मौजूद हैं .. इसलिए तथ्य यह है कि मुझे संघर्ष नहीं मिल रहा था, संस्करण भिन्नता का परिणाम हो सकता है। – ashishsony

उत्तर

6

आप का एहसास है हाँ क्या

svn merge branchUrl trunkUrl branchWorkingCopy 

वास्तव में करता है?

बाहर branchUrltrunkUrl के समान की सामग्री बनाने के लिए आवश्यक परिवर्तनों के समूह चित्र:

यहाँ एक अनुवाद है। अब शाखा वर्किंग कॉपी पर उन परिवर्तनों को निष्पादित करें।

आपको इस तरह से विलय करने के लिए कोई संघर्ष नहीं मिलेगा। जब आप अपने शाखा वर्किंग कॉपी में चेक इन करते हैं, तो भी, आप अपनी शाखा को अपने ट्रंक के समान बना देंगे, जो लगभग निश्चित रूप से नहीं है जो आप चाहते हैं।

svn merge -r100:103 trunkUrl branchWorkingCopy 
:

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

जिसका अर्थ है: ट्रंक पर r100 से r103 तक प्राप्त करने के लिए आवश्यक परिवर्तनों का सेट निर्धारित करें। कामकाजी प्रतिलिपि (शाखा) पर उन परिवर्तनों को करें। ध्यान दें कि इस "परिवर्तनों के सेट" में आर 100 द्वारा किए गए परिवर्तन शामिल नहीं होंगे, क्योंकि उन्हें r99 से R100 तक प्राप्त करने के लिए आवश्यक परिवर्तनों के सेट द्वारा कैप्चर किया गया है। सबवर्सन में संशोधन श्रेणी आधा खुला है।

इसके अलावा, fine manual पढ़ने पर विचार करें, यदि आपने अभी तक नहीं किया है।

+0

वह अभी भी संघर्ष कर सकता है (मैंने किया), लेकिन आपका जवाब अन्यथा सही है। –

+0

मुझे आश्चर्य है, लेकिन फिर मैं शाखा वर्किंग कॉपी में कोई असामान्य परिवर्तन नहीं कर रहा हूं। क्या आपने एक स्वच्छ गंतव्य के साथ संघर्ष भी देखा है? – bendin

+0

वास्तव में इस सवाल का जवाब, स्पष्ट अपने सभी संदेहों को किया था के रूप में मैं तर्कों की गलत आदेश के साथ आदेश का उपयोग कर रहा था ... – ashishsony

0

तो SVN मर्ज सिर्फ की जगह सामग्री जबकि विलय और नहीं कोई विरोध लाने करता है?

अच्छा, नहीं। मैं वास्तव में यह नहीं बता सकता कि आपने क्या किया है, लेकिन झंडे विलय अद्यतन के समान ही संघर्ष करते हैं।

0

मुझे कुछ याद आ रहा है, लेकिन जब मैंने svn विलय का उपयोग किया है, तो मुझे हमेशा सही संख्या में काम करना चाहता था, तो मुझे हमेशा संशोधन संख्याएं मिलनी पड़ती थीं।

इसलिए, यदि आप संशोधन 100 पर branched (या पिछले मर्ज किए गए), ट्रंक वर्तमान में 200 पर है, और आप शाखा काम कर निर्देशिका में अपनी शाखा में ट्रंक से परिवर्तन मर्ज करने के लिए है, तो चाहते हैं आप करते हैं:

svn merge -r 100:200 trunkURL 

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

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

[संपादित करें: SVN संस्करण 1.5 ... से पहले]

कार्य निर्देशिका और शाखाओं SVN में एक ही बात कष्टप्रद के रूप में यह है नहीं हैं, और, आप मतभेद के लिए खाते में करने के लिए है। अद्यतन या चेकइन करने के बजाय, एसवीएन को शाखा विलय करने के लिए अधिक जानकारी की आवश्यकता होती है, क्योंकि afaik यह स्वचालित रूप से यह नहीं लेता है कि शाखा किस तरह से हुई है, जिस पर यह हमेशा काम करता है कि एक कार्यशील निर्देशिका कहां से चेक की गई थी। मुझे यकीन है कि इसके लिए एक कारण है, मैं बस यह सुनिश्चित करने के लिए नहीं जानता कि यह क्या है: संभवतः क्योंकि एसवीएन प्रतिलिपि सिर्फ शाखाओं की तुलना में अधिक चीजों के लिए है।

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

svn merge trunkURL 

और आपको संघर्ष देखना चाहिए। आप पहली बार काम कर निर्देशिका वापस लौटने के लिए हो सकता है।]

+0

विवर्तन 1.5 तक, मुझे विश्वास है कि यह हमेशा आवश्यक था। अब, लक्ष्य वर्कस्पेस से एक सीधा 'svn merge sourceURL' उन सभी संशोधनों को मर्ज करेगा जो उपवर्तन मेटाडेटा में विलय होने के रूप में लॉग इन नहीं हैं। –

+0

अच्छा, धन्यवाद। अब आप इसका जिक्र करते हैं, मुझे याद है कि 1.5 ने इस संबंध में चीजों को बेहतर बनाया है। लेकिन जिस कंपनी के साथ मैं 1.5 समय के साथ था, उसमें पहले से ही सही संस्करण संख्याओं को समझने के लिए स्क्रिप्ट का एक समूह था, और जब तक मैंने छोड़ा था तब तक चीजों को बदलने के लिए नहीं मिला था। –

+0

मुझे लगता है कि आपके पास एक वैध बिंदु है कि मुझे संघर्ष क्यों नहीं मिला .. लेकिन मुझे अपने अवलोकन पोस्ट करने से पहले सोमवार को फिर से प्रयास करना होगा .. उत्तर देने के लिए धन्यवाद। – ashishsony

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