2010-03-16 4 views
6

जब आप एक वीएस सी # प्रोजेक्ट पर कई डेवलपर्स के साथ काम कर रहे हैं, जो सभी एक ही समाधान में नई परियोजनाओं और फ़ाइलों को जोड़ते हैं, तो आखिरी बार अपने परिवर्तनों को देखने और जांचने के लिए परियोजना समाधान फ़ाइल पर विवाद हो जाता है जो मर्ज करना आसान नहीं होता है ।विजुअल स्टूडियो 2008: प्रोजेक्ट फ़ाइल से कैसे बचें नरक मर्ज करें?

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

मुझे आश्चर्य है कि ऐसा करने का कोई आसान तरीका है या नहीं। पढ़ें: क्या मैं वीएस/टीएफएस/विलय कर सकता हूं यह मेरे लिए कर सकता है?

+1

क्या है एक्सएमएल फाइल विलय के बारे में मुश्किल? –

+0

ऑटो विलय मेरे अनुभव में प्रोजेक्ट फ़ाइलों को संभालने में बहुत बुरा नहीं है, और यह आपके लिए वह विकल्प प्रदान करता है (जिसे आप वर्तमान में खारिज कर रहे हैं!)। –

+0

आप कितनी बार परियोजनाओं को जोड़ रहे हैं? एक समाधान में परियोजनाओं को जोड़ना एक दैनिक कार्य नहीं होना चाहिए जब आपका आर्किटेक्चर सामने रखे। शायद आपको यह भी एक नियम बनाना चाहिए कि अगर परियोजना को जोड़ा जा सकता है तो डेवलपर्स को वरिष्ठ देव या वास्तुकार से पूछना चाहिए। यहां तक ​​कि फाइलें भी जोड़ना बहुत दुर्लभ होना चाहिए। – Steven

उत्तर

18

मेरा सुझाव अद्यतन और अधिक बार प्रतिबद्ध होगा। विशेष रूप से, सुनिश्चित करें कि समाधान फ़ाइल पर किसी भी बदलाव को लंबित करने से पहले आप नवीनतम प्राप्त करें।

एक्सएमएल और टेक्स्ट फाइलों (जो सभी प्रोजेक्ट और सॉल्यूशन फाइलें हैं) के साथ "नरक मर्ज करें" आमतौर पर केवल इसलिए होता है क्योंकि लोग एकल परिवर्तनों को करने की कोशिश कर रहे हैं जो बहुत बड़े हैं।

यदि आप नियमित रूप से काम करने की आदत में आते हैं, तो विलय छोटे होते हैं, और उपकरण इसका एक आदर्श काम करते हैं।

+0

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

+1

@ रेड, मुझे असहमत होना चाहिए। क्या आपने वास्तव में * .sln फ़ाइल के विरुद्ध एक ऑटोमर्ज टूल चलाया है जहां दो लोगों ने नई परियोजनाएं जोड़ दी हैं? परियोजनाओं को असाइन किए जाने के तरीके के कारण सचमुच ऐसा कोई रास्ता नहीं होगा। –

+1

@ रिचर्ड: यदि आप अक्सर अद्यतन करते हैं और प्रतिबद्ध करते हैं, तो ऐसा कभी नहीं होना चाहिए। निजी तौर पर, मैं अपनी टीम को हमेशा प्रतिबद्धता से पहले अद्यतन करता हूं। मैं व्यक्तिगत रूप से महसूस करता हूं कि एक नई परियोजना जोड़ी जा रही है वह सब कुछ स्वयं ही होनी चाहिए। इसका मतलब है कि आप अपडेट करते हैं, कोई बदलाव करते हैं। फिर अपनी परियोजना जोड़ें, और प्रतिबद्ध है। असल में, आपके पास दो "नई" परियोजनाओं को विलय करने के लिए कभी नहीं होना चाहिए, जब तक कि दो लोग एक ही प्रोजेक्ट को उसी मिनट के समय (बहुत ही असंभव) में जोड़ने की कोशिश न करें ... –

1

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

यदि आप विलय नहीं करना चाहते हैं, तो विकल्प यह है कि अगर कोई नई परियोजना के साथ समाधान में जांच करता है, तो उस प्रोजेक्ट और समाधान को खींचें, अपनी स्वयं की समाधान फ़ाइल को ओवरराइट करें, फिर अपनी परियोजना को फिर से जोड़ें समाधान और उसमें वापस जांचें। अब समाधान में उनकी परियोजना और आपका दोनों है।

+2

कुछ फाइलें एक संदर्भ के रूप में समाधान रखने के लिए अच्छी हैं। अतीत में उपयोग किए गए उदाहरण तीसरे पक्ष के असेंबली, मजबूत नामकरण कुंजी, सामान्य नोट्स, और साझा कॉन्फ़िगरेशन फ़ाइलें होंगी। –

+0

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

+0

मैं हारूनियों से सहमत हूं कि आपको सापेक्ष पथों से सावधान रहना होगा। हालांकि, मैथ्यू बताते हुए समाधान में तीसरे पक्ष के असेंबली को जोड़ना बहुत सामान्य है। मैं हमेशा जो करता हूं वह समाधान निर्देशिका में तृतीय पक्ष डीएलएस के लिए 'साझा असेंबली' नामक एक निर्देशिका बनाता है और उसी नाम के साथ एक समाधान फ़ोल्डर बनाता है। इस तरह से मुझे कभी भी हारूनियों की कोई समस्या नहीं है। – Steven

0

एक सुझाव यह परिवर्तन आप SLN फाइल करने के लिए बनाने के लिए जब आप प्रतिबद्ध को न्यूनतम करने पर टिप्पणी की पूल में जोड़ने के लिए ...

कार्य, यह आसान दूसरों को मर्ज करने के लिए बनाने के लिए।

(बेशक, यह भी दूसरों के लिए भी जाता है)।

, उदाहरण देकर स्पष्ट करना मान लीजिए आपका SLN फ़ाइल वर्तमान में चार परियोजनाओं को सूचीबद्ध करने के लिए:

SLN: A, B, C, D 

आप और एक सह कार्यकर्ता दोनों परिवर्तन करें। आप (किसी कारण के लिए) परियोजना ई जोड़ने, प्लस बातें पुनर्क्रमित हो:, अपने सह

Co-Worker: A, B, C, D, F 

आप अपने परिवर्तन के लिए प्रतिबद्ध है, तो के रूप में:

Yours: A, E, D, C, B 

अपने सहकर्मियों परिवर्तन परियोजना एफ जोड़ने शामिल -वेकर को इन दोनों को विलय करना पड़ता है:

SLN: A, E, D, C, B 
Co-Worker: A, B, C, D, F 

गंदा।

इसके बजाय, यदि आप (ध्यान से!), अपने मतभेदों को कम करने के लिए काम करते हैं आप अपने काम की नकल इस तरह दिखेगा कर सकते हैं:

SLN: A, B, C, D, E 
Co-Worker: A, B, C, D, F 
:

Yours: A, B, C, D, E 

इस मामले में, जब अपने सह कार्यकर्ता मर्ज करने के लिए की जरूरत है, वे इस का सामना करना होगा

विलय करना बहुत आसान है।

1

मैं भी परियोजना फ़ाइलों के साथ विलय समस्याओं से बहुत परेशान था।

तो मैं इसके बारे में कुछ किया था (एक बिंदु पर मैं किसी एक प्रोजेक्ट फ़ाइल में 9000 + विवादों को सुलझाने की कोशिश कर रहा था।): हालांकि यह एक परियोजना फ़ाइल के रूप में शुरू की तुलना/मर्ज उपकरण http://www.projectmerge.com

, इसे जल्दी किसी ऐसी XML में विकसित किया गया है जो किसी भी XML फ़ाइल की तुलना और विलय कर सकता है।

आशा है कि आपको यह उपयोगी लगेगा।

6

मैंने विशेष रूप से समाधान फ़ाइल की तुलना/विलय करने के लिए एक टूल बनाया है (और गतिशील रूप से फ़िल्टर किए गए समाधान को भी बनाने के लिए उपयोग किया जा सकता है)।

यह कम से पाया जा सकता है: http://slntools.codeplex.com/

+0

वाह धन्यवाद मैं इसे आजमाउंगा। मुझे शुभकामनाएँ दें! – toddmo

+0

बस मुझे बहुत सी हेडबैंगिंग बचाई। धन्यवाद :) –

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