क्या मुझे .vcxproj.filter फ़ाइलों को स्रोत नियंत्रण में जोड़ना चाहिए?


169

विज़ुअल स्टूडियो 2010 बीटा 2 का मूल्यांकन करते समय, मैं देखता हूं कि परिवर्तित निर्देशिका में, मेरी vcproj फाइलें vcxproj फाइलें बन गईं । प्रत्येक प्रोजेक्ट के साथ vcxproj.filter फाइलें भी होती हैं जो फ़ोल्डर संरचना (\ Source फ़ाइलें, \ Header Files, आदि) का विवरण सम्‍मिलित करती हैं।

क्या आपको लगता है कि इन फ़िल्टर फ़ाइलों को प्रति उपयोगकर्ता रखा जाना चाहिए, या उन्हें पूरे देव समूह में साझा किया जाना चाहिए और एससीसी में जांच की जानी चाहिए?

मेरी वर्तमान सोच उन्हें जांचने की है, लेकिन मुझे आश्चर्य है कि क्या ऐसा करने के लिए कोई कारण नहीं हैं, या शायद अच्छे कारण हैं कि मुझे निश्चित रूप से जांच करनी चाहिए।

स्पष्ट लाभ यह है कि अगर मैं किसी और की मशीन को देख रहा हूं तो फ़ोल्डर संरचनाएं मेल खाएगी, लेकिन शायद वे चीजों को तार्किक रूप से पुनर्गठित करना चाहेंगे?

जवाबों:


59

विज़ुअल स्टूडियो के पिछले संस्करण (कम से कम संस्करण 6.0 और 2008) उस जानकारी को अपनी स्वयं की प्रोजेक्ट फ़ाइल (.dsp और .vcproj फ़ाइलों में क्रमशः) संग्रहीत करते हैं, जो निश्चित रूप से SCC में जोड़ना अच्छा है।

मैं इस .filter फ़ाइलों को SCC में शामिल नहीं करने का कोई कारण नहीं सोच सकता


मैं तुम्हारे साथ हूँ। मैंने इसे चेक किया। धन्यवाद!
21

111

हमने जानबूझकर .filter खींचा। जब हम .vcxproj MSBuild प्रारूप में अनुवाद करते हैं, .vcproj से बाहर फ़ाइल जानकारी। एक कारण बिल्कुल वही है जो आपने बताया, कि फिल्टर विशुद्ध रूप से एक तार्किक दृष्टिकोण है, और टीम के विभिन्न सदस्य अलग-अलग विचार चाहते हैं। दूसरा यह है कि कभी-कभी प्रोजेक्ट फ़ाइल के टाइमस्टैम्प की जांच के लिए बिल्ड को सेट किया जाता है, और यदि यह बदल गया है तो एक पुनर्निर्माण को ट्रिगर करें - क्योंकि इसका मतलब यह हो सकता है कि निर्माण के लिए अलग-अलग स्रोत फ़ाइलें हैं, या विभिन्न सेटिंग्स, आदि। याद रखें कि अगर हमने वास्तव में निर्माण को इस तरह से ट्रिगर किया है, लेकिन विचार यह था कि हम केवल पुनर्निर्माण को ट्रिगर नहीं करना चाहते थे क्योंकि फ़िल्टर बदल गए, क्योंकि वे निर्माण को प्रभावित नहीं करते हैं।


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

3
दूसरे शब्दों में, आप दोनों फ़ाइलों का प्रबंधन करते हैं जैसे कि वे एक थे। मुझे नहीं लगता कि कोई और उनके साथ अलग व्यवहार करेगा। यह एक अच्छा विचार है, लेकिन वास्तविक दुनिया की प्रथाओं के बारे में थोड़ा सोचा गया है (जैसे WinSxS में रनटाइम लगाने के लिए)
gbjbaanb

9
मैं उनके साथ अलग से व्यवहार करता हूं। जहां तक ​​मेरा सवाल है, कम बकवास जिसे परियोजना राज्य के हिस्से के रूप में संरक्षित किया जाना है, बेहतर है, इसलिए मुझे लगता है कि यह एक अच्छा निर्णय है।
रिवालेस

6
यदि हम किसी सार / तार्किक पेड़ का उपयोग नहीं करना चाहते हैं, तो क्या हम उन फिल्टरों को पूरी तरह से निष्क्रिय कर सकते हैं, लेकिन सिर्फ सादे फाइल सिस्टम को देखें?
जोहान बोले

4
@JohanBoule: मैं पूरी तरह से सहमत हूँ! उन्हें सिर्फ आईडीई में फिल्टर को बिखेर देना चाहिए था। पहले से ही एक तार्किक वृक्ष संरचना है और इसे "फाइलसिस्टम" कहा जाता है। वर्तमान में बहुत अधिक दोहराव है - प्रत्येक फाइल को फाइलसिस्टम में जोड़ा जाना है, बिल्ड स्क्रिप्ट (vcxproj), फिल्टर्स (vcxproj.filters), सोर्स कंट्रोल और शायद कहीं और। यह DRY priciple का उल्लंघन करता है। सौभाग्य से ऐसा लगता है कि फिल्टर फाइलें वैकल्पिक हैं । आप बस उन्हें हटा सकते हैं और आईडीई में "सभी फाइलें दिखाएं" बटन का उपयोग कर सकते हैं। अफ़सोस कि यह डिफ़ॉल्ट नहीं है।
याकॉव गल्का

5

मैंने अभी पाया कि यदि आप Git का उपयोग करते हैं, तो आप इसे सरल बनाने के लिए विलय के लिए एक संघ के रूप में व्यवहार करने के लिए .filter फ़ाइलों को चिह्नित कर सकते हैं। बस लाइन जोड़ें:

*.vcxproj.filters merge=union

आपकी .gitattributes फ़ाइल में।

अधिक विवरणों के लिए मर्ज विरोधों से बचने के लिए .gitattributes का उपयोग करना देखें ।


उल्लिखित लिंक ने यह नहीं कहा है। फ़ाइल फ़ाइल में "यूनियन" होना चाहिए जिसका उल्लेख gitattributes फ़ाइल में है।
ollydbg23

2
लेकिन यह बताता है कि क्या merge=unionकरता है - कुछ और वादा नहीं किया गया था। उस ज्ञान और एक बहुत व्यापक विचार के साथ * .filter-files कैसे दिखते हैं, यह देखना आसान है कि merge=unionउन फ़ाइलों के लिए एक अच्छा विचार क्यों है।
पीटर श्नाइडर

1

यह आप का उपयोग मामले में नहीं जोड़ा जाना चाहिए CMake(या इसी तरह का निर्माण उपकरण) की तरह फाइलों उत्पन्न करने के लिए *.sln, *.vcxproj, *.vcxproj.filters, आदि, क्योंकि इस फ़ाइलें आपके प्रोजेक्ट फ़ोल्डर और अन्य का पूर्ण पथ हो सकती है केवल अपने कंप्यूटर के विशिष्ट फ़ोल्डरों

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.