2009-08-25 8 views
7

किसी को भी विजुअल स्टूडियो प्रोजेक्ट (.csproj) या समाधान (.sln) फ़ाइलों को मर्ज करने के लिए एसवीएन प्राप्त करने में कोई सफलता मिली है जिसे दो उपयोगकर्ताओं द्वारा संपादित किया गया है? उदाहरणविजुअल स्टूडियो, एसवीएन और विलय .csproj और .sln फ़ाइलें

  1. उपयोगकर्ता एक परियोजना बाहर की जाँच करता है
  2. उपयोगकर्ता B एक ही परियोजना
  3. उपयोगकर्ता A एक फ़ाइल
  4. उपयोगकर्ता एक परिवर्तन
  5. उपयोगकर्ता B एक फ़ाइल
  6. उपयोगकर्ता B करता है कहते हैं करता है कहते हैं बाहर की जाँच करता है परिवर्तन

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

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

+0

क्या आपने फ़ाइलों पर माइम-प्रकार सही ढंग से सेट किया है? –

+4

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

+1

हाँ, चरण 6 पर, svn क्लाइंट को यह रिपोर्ट करनी चाहिए कि कार्यशील प्रति पुरानी है। कुछ गलत होना चाहिए, क्योंकि यह हमारे लिए काम करता है। – crashmstr

उत्तर

32

आपको लगता है कि आप चरण # 6 करने में एसवीएन की चाल कैसे करते हैं? ऐसा लगता है कि आप गलत क्या समझते हैं। एसवीएन कभी भी ऐसी कार्यशील प्रतिलिपि से कभी प्रतिबद्ध नहीं होगा जो तक नहीं है, इसलिए चरण # 6 उपयोगकर्ता बी के पहले अपडेट और विलय करने के बिना उपयोगकर्ता बी के बिना काम नहीं करेगा। ईमानदारी से। कोशिश करो।

मुझे लगता है कि क्या बजाय होता यह है:

  1. एक परियोजना बाहर की जाँच करता है।
  2. बी एक ही परियोजना की जांच करता है।
  3. ए एक फाइल जोड़ता है।
  4. ए परिवर्तन करता है।
  5. बी एक फ़ाइल जोड़ता है, लेकिन परियोजना/समाधान को सहेजना भूल जाता है।
  6. बी परिवर्तन करने की कोशिश करता है और उसे एक संदेश प्राप्त होता है जिसे उसे पहले अपडेट करना चाहिए।
  7. बी अद्यतन।
  8. बी वापस वीएस पर स्विच करता है। वीएस उसे डिस्क पर प्रोजेक्ट/समाधान बदलता है और पूछता है कि क्या वह ए से चाहता है) डिस्क से पुनः लोड करें और उसके परिवर्तन खो दें बी) डिस्क पर संस्करण को ओवरराइड करें।
  9. बी समझ में नहीं आता है, समझने की कोशिश नहीं करता है, अपने परिवर्तनों को मूल्यवान मानता है, और बी उठाता है), डिस्क पर परिवर्तनों को ओवरराइड करना।
  10. बी अभी भी समझने की कोशिश नहीं करता है और इस प्रकार वह पिछले संस्करण के साथ डिस्क पर मौजूद संस्करण को अलग नहीं करता है और इस प्रकार याद करता है कि वह ए के परिवर्तनों को ओवरराइड करता है।
  11. बी ए के परिवर्तनों को ओवरराइड करने में चेक इन करता है।

मैंने इसे एक बार में एक बार देखा है, आमतौर पर उपयोगकर्ता बी के साथ जो वास्तव में एसवीएन (या सीवीएस ', एफटीएम) वर्कफ़्लो को नहीं समझता है।

तो यहाँ कुछ संकेत है: जब तक आप सब कुछ बचाया है

अपडेट न करें ("फाइल" -> "सभी सहेजें"; मेरे लिए, कि Ctrl + + एस शिफ्ट है)। यदि आपने यह गलती की है और आप अटक गए हैं, तो डिस्क पर परिवर्तनों को ओवरराइड करें और फिर खोए गए परिवर्तनों को मैन्युअल रूप से मर्ज करें। चेकिंग जो आप फ़ाइलों के बिना प्रतिबद्ध नहीं है (यह भी परियोजना/समाधान फ़ाइल वापस संस्करण N-1, और उसके बाद करने के लिए अद्यतन करने के लिए फिर से सिर पर, काम कर सकते हैं क्रम SVN मर्ज करने के लिए में।)

बदल गया और त्वरित भिन्नता को देखने के लिए कि क्या आप अपेक्षा करते हैं कि परिवर्तन क्या हैं।

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

+1

यह मेरे साथ भी हुआ !! – Burnsys

+3

यह बहुत परिचित लगता है। तकनीकी समस्या की तुलना में यह एक प्रशिक्षण मुद्दा हो सकता है। = / –

1

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

मेरी टीम में हम ऐसा करने के लिए MPC का उपयोग करते हैं। हम:

  • परियोजना विवरण के लिए .mpc फाइलों का एक समूह,
  • कार्यक्षेत्र/समाधान विवरण के लिए एक .mwc फ़ाइल,
  • एक छोटे से .cmd दृश्य स्टूडियो फ़ाइलें उत्पन्न करने के लिए।

चूंकि वे सभी हाथ से संपादित टेक्स्ट फाइलें हैं, इसलिए अब हमें विजुअल स्टूडियो को सब कुछ मिलाकर समस्या नहीं है।

  • परियोजना विन्यास केंद्रीकृत हैं: उदाहरण के लिए, एक संकलन बदलते

    कमियां एक अतिरिक्त उपकरण और जब फ़ाइलें जोड़े या निकाले लेकिन कुछ अतिरिक्त लाभ भी हैं समाधान फ़ाइलों को पुनर्जीवित करने की जरूरत नहीं है प्रति-परियोजना आधार के बजाय ध्वज एक ही स्थान पर किया जाता है,

  • यह एकाधिक बिल्ड सिस्टम को समायोजित कर सकता है (हम वर्तमान में विजुअल 2003 और 2005 का उपयोग करते हैं लेकिन यह जीसीसी और अन्य के साथ भी काम करता है)।

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

ध्यान दें कि एमपीसी इस उद्देश्य के लिए एकमात्र साधन नहीं है। अन्य मौजूद हैं, जैसे CMake

2

मैं दूसरा एसबीआई का जवाब देता हूं। एक संभावित समाधान हमेशा विजुअल स्टूडियो के भीतर से अपडेट करना है, कम से कम यदि आप VisualSVN का उपयोग करते हैं (मुझे यकीन नहीं है कि इस स्थिति के साथ अंख्स्विन कैसे copes)।

विजुअल एसवीएन अद्यतन ऑपरेशन के दौरान दृश्य स्टूडियो को अवरुद्ध कर देगा, और सुनिश्चित करें कि कोई भी बदली गई परियोजना स्वचालित रूप से पुनः लोड हो जाती है, इसलिए उपयोगकर्ता बाहरी परिवर्तनों को अनदेखा नहीं कर सकते हैं।

1

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

आप एक परियोजना फाइल के अंदर वाइल्डकार्ड का उपयोग करने के लिए स्वतंत्र हैं: see MSDN

उदाहरण:

<ItemGroup> 
    <Compile Include="Src\**\*.cs" /> 
    [...] 
</ItemGroup> 

यह दुख की बात है कि दृश्य स्टूडियो परियोजना की स्थापना के इस तरह प्रोत्साहित नहीं करता है और बदले में लिस्टिंग के लिए चुनता है व्यक्तिगत फाइलें

0

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

चिंता न करें कि GUID का पहला भाग परियोजनाओं के लिए समान है, लेकिन यह अंतिम भाग है जो अद्वितीय होगा।

फिश

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