स्रोत नियंत्रण के लिए एक .sln फ़ाइल करने के लिए क्या यह सबसे अच्छा अभ्यास है? ऐसा करना कब उचित या अनुचित है?
अपडेट उत्तर में कई अच्छे बिंदु थे। प्रतिक्रियाओं के लिए धन्यवाद!
स्रोत नियंत्रण के लिए एक .sln फ़ाइल करने के लिए क्या यह सबसे अच्छा अभ्यास है? ऐसा करना कब उचित या अनुचित है?
अपडेट उत्तर में कई अच्छे बिंदु थे। प्रतिक्रियाओं के लिए धन्यवाद!
जवाबों:
मुझे लगता है कि यह अन्य उत्तरों से स्पष्ट है कि समाधान फाइलें उपयोगी हैं और उन्हें प्रतिबद्ध होना चाहिए, भले ही वे आधिकारिक बिल्ड के लिए उपयोग न किए जाएं। वे किसी भी विज़ुअल स्टूडियो सुविधाओं का उपयोग करने के लिए आसान हैं, जैसे गो टू डेफिनिशन / घोषणा।
डिफ़ॉल्ट रूप से, उनके पास पूर्ण पथ या कोई अन्य मशीन-विशिष्ट कलाकृतियां नहीं होती हैं। (दुर्भाग्य से, कुछ ऐड-इन टूल इस संपत्ति को ठीक से बनाए नहीं रखते हैं, उदाहरण के लिए, एएमडी कोडएनालिस्ट।) यदि आप अपनी परियोजना फाइलों (सी ++ और सी # दोनों) में रिश्तेदार पथ का उपयोग करने के लिए सावधान हैं, तो वे मशीन-स्वतंत्र होंगे भी।
संभवतः अधिक उपयोगी सवाल यह है: आपको किन फ़ाइलों को बाहर करना चाहिए? यहाँ मेरे VS 2008 परियोजनाओं के लिए मेरी .gitignore फ़ाइल की सामग्री है:
*.suo
*.user
*.ncb
Debug/
Release/
CodeAnalyst/
(अंतिम प्रविष्टि सिर्फ एएमडी कोडएनलिस्ट प्रोफाइलर के लिए है।)
वीएस 2010 के लिए, आपको निम्नलिखित को भी बाहर करना चाहिए:
ipch/
*.sdf
*.opensdf
हां - मुझे लगता है कि यह हमेशा उचित है। उपयोगकर्ता विशिष्ट सेटिंग्स अन्य फ़ाइलों में हैं।
आपके पास जरूर होना चाहिए। अन्य लोगों द्वारा बताए गए कारणों के अलावा, पूरे प्रोजेक्ट का एक कदम बनाना संभव है।
मैं आम तौर पर सहमत हूं कि समाधान फ़ाइलों की जांच होनी चाहिए, हालांकि, जिस कंपनी में हम काम करते हैं, उसके लिए हमने कुछ अलग किया है। हमारे पास समय-समय पर सिस्टम के विभिन्न हिस्सों पर काफी बड़े भंडार और डेवलपर्स काम करते हैं। हमारे काम करने के तरीके का समर्थन करने के लिए या तो हमारे पास एक बड़ी समाधान फ़ाइल होगी या कई छोटी होंगी। इन दोनों में कुछ कमियां हैं और डेवलपर्स हिस्से पर मैनुअल काम की आवश्यकता होती है। इससे बचने के लिए, हमने एक प्लग-इन बनाया है जो सभी को संभालता है।
प्लग-इन प्रत्येक डेवलपर को रिपॉजिटरी से संबंधित प्रोजेक्ट्स को चुनकर काम करने के लिए स्रोत ट्री के सबसेट को चेक करने देता है। तब प्लगइन एक समाधान फ़ाइल बनाता है और दिए गए समाधान के लिए फ्लाई पर प्रोजेक्ट फ़ाइलों को संशोधित करता है। यह संदर्भ भी संभालता है। दूसरे शब्दों में, सभी डेवलपर को उचित परियोजनाओं का चयन करना है और फिर आवश्यक फाइलें उत्पन्न / संशोधित की जाती हैं। यह हमें कंपनी मानकों को सुनिश्चित करने के लिए विभिन्न अन्य सेटिंग्स को अनुकूलित करने की भी अनुमति देता है।
इसके अतिरिक्त हम विभिन्न चेक-इन नीतियों का समर्थन करने के लिए प्लग-इन का उपयोग करते हैं, जो आम तौर पर उपयोगकर्ताओं को रिपॉजिटरी में दोषपूर्ण / गैर-अनुपालन कोड सबमिट करने से रोकता है।
हाँ, जो चीज़ें आपको करनी चाहिए वो हैं:
जिन चीजों के लिए आपको प्रतिबद्ध नहीं होना चाहिए , वे हैं:
अन्य स्वचालित रूप से उत्पन्न फ़ाइलों के संबंध में, एक अलग धागा है ।
हां, यह स्रोत नियंत्रण का हिस्सा होना चाहिए। जब आप कभी भी अपने एप्लिकेशन से प्रोजेक्ट्स को जोड़ते / हटाते हैं, तो sln अपडेट हो जाएगा और इसे सोर्स कंट्रोल में रखना अच्छा होगा। यह आपको अपने एप्लिकेशन कोड 2 संस्करणों को वापस खींचने और सीधे एक बिल्ड (यदि आवश्यक हो तो) करने की अनुमति देगा।
हम करते हैं क्योंकि यह सब कुछ सिंक में रखता है। सभी आवश्यक परियोजनाएं एक साथ स्थित हैं, और किसी को भी लापता होने के बारे में चिंता करने की ज़रूरत नहीं है। हमारा बिल्ड सर्वर (चींटी हिल प्रो) यह भी पता लगाने के लिए स्लैन का उपयोग करता है कि रिलीज के लिए किन परियोजनाओं का निर्माण करना है।
हम आम तौर पर हमारे सभी समाधान फ़ाइलों को एक समाधान निर्देशिका में डालते हैं। इस तरह हम कोड को हल से थोड़ा अलग करते हैं, और मुझे उस प्रोजेक्ट को चुनना आसान होता है जिस पर मुझे काम करने की आवश्यकता होती है।
हम टीएफएस वर्जन कंट्रोल में फाइलें रखते हैं या समाधान करते हैं। लेकिन चूंकि या मुख्य समाधान वास्तव में बड़ा है, अधिकांश डेवलपर्स के पास एक व्यक्तिगत समाधान होता है जिसमें केवल उनकी आवश्यकता होती है। मुख्य समाधान फ़ाइल का उपयोग ज्यादातर बिल्ड सर्वर द्वारा किया जाता है।
.slns केवल एक चीज है जिससे हमें tfs में कोई समस्या नहीं है !