2008-09-19 23 views
17

मैं ग्रहण में सीवीएस विलय करने के लिए काफी उपयोग करता हूं, और मैं अन्यथा इस तरह से खुश हूं कि सबक्लिप्स और सबवर्सिव एसवीएन रिपोजिटरी के साथ काम करते हैं, लेकिन मुझे पूरा यकीन नहीं है कि कैसे विलय ठीक से किया जाए।एक्लिप्स में सबवर्सन विलय करने का उचित तरीका क्या है?

जब मैं विलय करता हूं, तो ऐसा लगता है कि विलय में प्रतिस्थापित होने वाली पुरानी फाइलों को ओवरराइट करने के बजाय मेरी प्रोजेक्ट में एक अलग निर्देशिका में मर्ज किए गए फ़ाइलों को छड़ी करना है, क्योंकि मुझे सीवीएस में उपयोग किया जाता है।

प्रश्न उपclipse या subversive के लिए विशेष नहीं है।

सहायता के लिए धन्यवाद!

उत्तर

1

मैं सलाह देता हूं कि एक्लिप्स के प्लगइन का उपयोग सबवर्सन की प्राथमिक पहुंच के रूप में करने की कोशिश न करें।

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

KDiff3 पोर्टेबल है, TortoiseSVN एक विंडोज शैल एक्सटेंशन है, इसलिए यदि आप किसी अन्य वातावरण का उपयोग कर रहे हैं, तो मैं बस विलय करने के लिए एसवीएन का उपयोग करने की कोशिश करता हूं। लेकिन यह दर्द का अधिक होगा :)

+1

डाउनवॉटर - एक कारण जोड़ने की देखभाल? – MetroidFan2002

+20

मैं कहूंगा कि यह केवल नीचे मतदान किया गया था क्योंकि प्रश्न ग्रहण में इसे कैसे करना है इसके बारे में विशिष्ट था। – DustinB

+9

कभी-कभी जवाब बॉक्स से बाहर होना पड़ता है। – whatnick

4

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

4

ग्रहण एकीकरण का उपयोग करें, यह पूरी तरह से ठीक काम करता है।

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

यदि आपको यह अधिकार मिला है, तो यह केवल तुलना संपादक के साथ परिवर्तन प्राप्त करने के लिए आपके ऊपर है।

+3

यह इंगित करने योग्य है कि इतिहास को काम करने के लिए विलय करने के लिए, क्लाइंट, सर्वर और रिपॉजिटरी को कम से कम 1.5 तक अपग्रेड करने की आवश्यकता है: http://subversion.tigris.org/svn_1.5_releasenotes.html# देखें एमटी-संगतता –

3

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

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

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

अंगूठे के नियम के रूप में, सभी प्रतिबद्धताओं को एक ही प्रतिबद्धता में मर्ज करने के लिए सबसे अच्छा है और केवल प्रतिबद्धता में विलय संशोधन करना है ताकि यदि आवश्यक हो तो आप विलय को रोलबैक कर सकते हैं।

72

ट्रंक में एक पूरी शाखा विलय

  1. शाखा परियोजना इतिहास का निरीक्षण संस्करण है जहाँ से शाखा

    • लिया गया था डिफ़ॉल्ट ग्रहण टीम द्वारा निर्धारित करने के लिए "इतिहास" केवल पता चलता पिछले 25 संशोधन इसलिए आपको "सभी दिखाएं" लेबल वाले उस दृश्य में बटन पर क्लिक करना होगा
    • जब आप "सभी दिखाएं" कहें तो यह आपको शाखा की तारीख से पहले वापस ले जाएगा और आपको दिखाएगा आप ट्रंक के लिए भी सभी इतिहास के साथ-साथ आपको अपनी टिप्पणी की खोज करनी होगी जहां आपने
    • नोट: यदि आप इस कार्य के लिए टोर्टिस एसवीएन का उपयोग करते हैं (शाखा में नेविगेट करें और "लॉग दिखाएं" चुनें) आपको केवल शाखा इतिहास दिखाएगा ताकि आप कह सकें कि शाखा
  2. तो अब मुझे पता है कि 82517 शाखा इतिहास का पहला संस्करण आईडी था।तो अतीत 82,517 शाखा के सभी संस्करणों के परिवर्तन है कि मैं ट्रंक

  3. अब आप अपने ग्रहण कार्यक्षेत्र में "ट्रंक" परियोजना पर जाएं और में विलय करना चाहते हैं "- टीम - राइट क्लिक मर्ज करें"

  4. डिफ़ॉल्ट दृश्य 1 यूआरएल विलय

    • शाखा है जहाँ से आप संशोधन के
    • विलय हैं, उसका uRL का चयन "सभी" चुनें
    • ठीक दबाएं
    • है
  5. इस आदेश संघर्ष (नीचे देखें)

को हल करने में "टीम सिंक्रनाइज़ करना" परिप्रेक्ष्य के लिए ले जाएगा (अगर यह नहीं तुम वहाँ अपने आप को जाना चाहिए करता है) और अधिक फिर से विलय ट्रंक

  1. ट्रंक परियोजना इतिहास Insepct में शाखा परिवर्तन पिछली बार जब आप ट्रंक में विलय कर दिया (आप इस टिप्पणी की है चाहिए)

    012,351,641 निर्धारित करने के लिए
      तर्क की खातिर
    • मान लीजिए कि इस संस्करण था 82517
  2. तो अब मैं जानता हूँ कि किसी भी संस्करण से अधिक 82,517 शाखा में ट्रंक में विलय किए जाने की जरूरत है कि

  3. अब करने के लिए चलते हैं अपने ग्रहण कार्यक्षेत्र में "ट्रंक" परियोजना और "राइट क्लिक - टीम - मर्ज करें" का चयन

  4. डिफ़ॉल्ट दृश्य 1 यूआरएल है विलय

    • शाखा का URL जिसमें से आप विलय कर रहे हैं
    • संशोधन के तहत "संशोधन" रेडियो बटन चुनें और क्लिक करें "ब्राउज़ करें"
    • इस नवीनतम 25 शाखा संशोधन
    • सभी का चयन करें की एक सूची खुल जाएगा एक संख्या के साथ संशोधन की तुलना में 82517
    • ठीक दबाएं अधिक से अधिक (आप संशोधन सूची इनपुट क्षेत्र में रेडियो बटन के बगल में देखना चाहिए)
    • ठीक दबाएं
  5. यह "टीम सिंक्रनाइज़ करना" परिप्रेक्ष्य के लिए ले जाएगा आदेश विवादों को सुलझाने के में (अगर यह नहीं तुम वहाँ अपने आप हो जाता है चाहिए) (नीचे देखें)

हल संघर्ष

  1. आपको "टीम सिंक्रनाइज़िंग" परिप्रेक्ष्य में होना चाहिए। यह प्रतिबद्ध उद्देश्यों के लिए किसी भी नियमित सिंक्रनाइज़ेशन की तरह दिखेगा, जहां आप नई फाइलें और फाइलें जिनमें विवाद होते हैं।

  2. हर फ़ाइल जहां एक संघर्ष को दिखाई देने के लिए "राइट क्लिक - संघर्ष संपादित करें" (फ़ाइल डबल क्लिक नहीं करते हैं, यह लाएगा प्रतिबद्ध diff संस्करण उपकरण, यह बहुत अलग है)

    • यदि आप देखते हैं की तरह "< < < < < < < .working" या ">>>>>>> .merge-right.r84513" तो आप गलत संपादन मोड में हैं सामान
  3. एक बार आप उस फ़ाइल में सभी संघर्षों का समाधान कर लिया, करने के लिए "विलय कर के रूप में निशान" फ़ाइल

  4. बता एक बार सभी फाइलों को संघर्ष की मुक्त आप तो अपने ग्रहण परियोजना सिंक्रनाइज़ और SVN

  5. करने के लिए फ़ाइलों के लिए प्रतिबद्ध कर सकते हैं Subclipse के लिए
+5

इसे उत्तर के रूप में चिह्नित किया जाना चाहिए! – HDave

+2

स्वीकृत उत्तर के लिए इस बनाम 2 अपवॉट्स के लिए 40 अपवॉट्स आपके साथ सहमत हैं @HDave – amadain

+1

यदि मैं दूसरे खंड में वर्णित एक शाखा को ट्रंक में रीमरर्ज करना चाहता हूं, तो क्या मैं हमेशा एक ही परिणाम प्राप्त करूंगा यदि मैं हमेशा "सभी" संशोधन का चयन करता हूं पिछले संशोधन को एक-एक करके चुनने का? – shylynx

3

openCollabNet के मर्ज उपकरण बहुत साफ है। कई विलय प्रकार उपलब्ध हैं और विलय के दौरान मैंने विलय के साथ अभी प्रदर्शन किया है। मेरा यही सुझाव है।

2

एक बात यह है कि ग्रहण में दृश्य syncrhonize का अभाव चेक-इन क्षमता है। टीम सिंक्रनाइज़ेशन व्यू में मैं अपने सभी परिवर्तन देख सकता हूं और विवादों को हल कर सकता हूं, इसलिए जावा दृश्य पर वापस जाने और चेक-इन करने के बजाय वहां चेक-इन करने के बजाय यह सहज ज्ञान युक्त होगा।

4

सबसे पहले, यदि आप ">>>>>" और आपकी फ़ाइलों में इस तरह देख रहे हैं जब आप उन्हें ग्रहण में देखते हैं, तो यह शायद मतलब है कि आप उचित तुलना संपादक के साथ फ़ाइल को नहीं देख रहे। प्रोजेक्ट व्यू में फ़ाइल पर राइट-क्लिक करने का प्रयास करें या दृश्य सिंक्रनाइज़ करें और तुलना संपादक को लाने के लिए "संघर्ष संपादित करें" का चयन करें जो आपको टेक्स्ट के बजाए ग्राफिक रूप से विरोधाभासी क्षेत्रों को दिखाएगा। ध्यान दें कि तुलना संपादक कि "संपादित संघर्ष" के लिए ऊपर आता है से अलग है कि आप जब तुम सिर्फ सिंक्रनाइज़ ध्यान में रखते हुए एक फ़ाइल पर DoubleClick मिलता है - DoublieClick संपादक की तुलना अपने वर्तमान फ़ाइल और जिस तरह से यह अस्तित्व में अंतर बताती जब आप पिछले इसे बाहर की जाँच की है या यह अद्यतन है, जबकि संपादित संघर्ष तुलना संवाद परिवर्तन की दो स्रोतों के बीच अंतर दिखाते (उदाहरण के लिए, परिवर्तन आप परिवर्तन है कि अपने कार्यक्षेत्र में ही अस्तित्व में विलय कर दिया इससे पहले कि आप बनाम विलय)।

दूसरा, आप एक्लिप्स उपवर्ती प्लगइन के कुछ संस्करणों में एक बग से अवगत होना चाहते हैं, जो सभी फ़ाइलों को विलय स्वीकार करने के कारण गलत तरीके से संघर्ष के रूप में चिह्नित किया जाता है। यह बग ठीक कर दिया गया है, लेकिन अभी तक बहुत से लोगों को ठीक करने के लिए अपडेट नहीं किया गया है। यहाँ अधिक जानकारी:

https://bugs.eclipse.org/bugs/show_bug.cgi?id=312585

0

मैं यहाँ उतरा, क्योंकि मैं एक तरह से एक बाहरी मर्ज संपादक (KDIFF3) में विलय लेकिन ग्रहण से मर्ज शुरू करने के लिए के लिए देख रहा था। मैं ऊपर दिए गए उत्तरों से संतुष्ट नहीं था। एक्सटेंशन या माइम प्रकार: -> प्राथमिकताएं → टीम - -> SVN> Diff व्यूअर (बटन जोड़ने) एक नई config जोड़े

विंडोज पर जाएँ: तो यहाँ kdiff3 ग्रहण में SVN के लिए मर्ज और diff संपादक के रूप में कॉन्फ़िगर करने के लिए हो रहा है : * - यदि आप चाहते हैं कि आप अलग-अलग संपादकों के लिए अलग-अलग माइमटाइप निर्दिष्ट कर सकें, तो मुझे इस तरह की आवश्यकता नहीं थी।

Diff: कार्यक्रम पथ C: \ Program Files \ KDiff3 \ kdiff3.exe (या जहाँ भी आप अपने मर्ज संपादक है - खिड़कियों पथ के लिए sry, टिप्पणी में एक लिनक्स संस्करण जोड़ सकते हैं या इस संपादित करने के लिए स्वतंत्र लग रहा है जवाब।)

तर्क: $ {आधार} $ {मेरा} $ {उनकी}

मर्ज: कार्यक्रम पथ C: \ Program Files \ KDiff3 \ kdiff3.exe

तर्क: $ {बेस} $ {mine} $ {theirs} -o $ {merged}

यह शायद अन्य मर्ज संपादकों के लिए भी काम करेगा, लेकिन एक अलग तर्क वाक्यविन्यास के साथ (इसे समझने के लिए हमें बताएं :))।

विलय दृश्य के लिए विलय और तुलना-> foo के लिए उपयोग सामान्य (टीम-> संपादन विवाद) के रूप में सामान्य है।

चीयर्स

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