2012-02-07 11 views
7

मैंने कुछ एएसपी.NET समाधानों के लिए svn: externals का उपयोग करने के लिए उपयोग की जाने वाली कुछ निर्भर निर्भरताओं के लिए NuGet संकुल बनाना शुरू कर दिया है। मैं नेटवर्क फ़ोल्डर में .nupkg फ़ाइलों को होस्ट कर रहा हूं, और उस फ़ोल्डर स्थान को NuGet फ़ीड के रूप में उपयोग कर रहा हूं।क्या स्व-निर्मित NuGet संकुल संस्करण नियंत्रण में रखा जाना चाहिए?

मुझे यकीन है कि संस्करण नियंत्रण में कहां स्थानांतरित करना है और कहां है। क्या आप अपने भंडार में .nuspec और .nupkg फ़ाइलों दोनों डालते हैं? प्रोजेक्ट के संस्करण नियंत्रण में .nuspec और .nupkg फ़ाइल दोनों करें? मैंने सोचा था कि .nuspec फ़ाइल .nupkg फ़ाइल उत्पन्न करती है, तो आपको केवल उस फ़ाइल को संस्करण नियंत्रण में चाहिए। लेकिन, मैं यह भी सोच रहा था कि नेटवर्क फ़ोल्डर बनाने का अच्छा विचार हो सकता है, कि मैं एक NuGet फ़ीड के रूप में उपयोग कर रहा हूं, खुद में एक रेपो। तब मैं संस्करण .nupkg फ़ाइलों को नियंत्रित कर सकता हूं।

संस्करण नियंत्रण के लिए NuGet संकुल बनाने के लिए कुछ अच्छे अभ्यास क्या हैं?

उत्तर

5

मैं वही जगह हूं जहां आप हैं। इस विचार को ध्यान में रखते हुए कि आप कोई भी फाइल नहीं बना सकते हैं जिसे आप बना सकते हैं, मेरी .nuspec फ़ाइलें संस्करण नियंत्रण में जाती हैं, लेकिन .nupkg फ़ाइलें नहीं होती हैं।

चूंकि संस्करण संख्या को .nupkg फ़ाइल नाम में शामिल किया गया है, इसलिए आप एक ही समय में संग्रह में पैकेज के अलग-अलग संस्करण रख सकते हैं। आपको या तो .nuspec फ़ाइल में <version>$version$</version> फ़ॉर्म का उपयोग करने की आवश्यकता है, और असेंबली संस्करण को स्वत: वृद्धि के लिए सेट करें, या प्रत्येक बार मैन्युअल रूप से संस्करण संख्या को मैन्युअल रूप से बदलें। फिर आप उस संस्करण संख्या पर एक सबवर्जन टैग बना सकते हैं, ताकि यदि आपको आवश्यकता हो तो आप किसी विशेष पैकेज संस्करण के स्रोत पर वापस जा सकते हैं।

क्लाइंट प्रोजेक्ट्स को स्वचालित रूप से हमारे पैकेज में मामूली बग फिक्स को शामिल करने के लिए, हम क्लाइंट प्रोजेक्ट्स में NuGet Package Restore को सक्षम करने जा रहे हैं, और छोटे, निश्चित संस्करण संख्याओं जैसे "1.2" के साथ पैकेज प्रकाशित करने जा रहे हैं। जब पैकेज के लिए एक साधारण बग फिक्स होता है, तो हम उसी संस्करण संख्या के साथ पुनः प्रकाशित करेंगे। वह भंडार में पूर्व संस्करण को ओवरराइट करेगा; क्लाइंट प्रोजेक्ट तब अपडेट प्राप्त करेंगे जब वे बिल्ड चरण के दौरान संकुल को पुनर्स्थापित करेंगे।

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