2009-02-23 10 views
10

में जोड़ना क्या उपरोक्त में फ़ाइलों को जोड़ना संभव है जिसे संस्करणित नहीं किया जाना चाहिए? F.ex. कॉन्फ़िगर-फ़ाइलें जिन्हें प्रत्येक व्यक्तिगत वातावरण से मेल खाने के लिए संपादित करने की आवश्यकता होती है। जब एक नया प्रोग्रामर प्रोजेक्ट से जुड़ा होता है तो उसे मूल फ़ाइल को उपversण से प्राप्त करना चाहिए, लेकिन इसे संपादित करने के बाद इसे चालू नहीं किया जाना चाहिए और जब वह अपडेट करता है तो उसे ओवरराइट नहीं किया जाएगा।विवर्तन फ़ाइलों को विवर्तन

शायद पूरे मूल-प्रोजेक्ट के लिए टैग बनाना समाधान है? सबसे पहले टैग डाउनलोड करना और फिर ट्रंक से अपडेट करें?

कोई विचार?


नीचे टिप्पणी करने के लिए स्पष्टीकरण: परियोजना (Sitecore) अलग फ़ाइलों के बारे में 30k संख्या के होते हैं। हमें इनमें से 100 के संस्करण की आवश्यकता है। अगर हमें संस्करण में सभी फाइलों को शामिल करना चाहिए तो प्रत्येक प्रतिबद्धता हमेशा के लिए लेती है (जैसे सभी फ़ोल्डरों के माध्यम से कछुए की खोज)। आज हम सभी अपवर्तन फ़ोल्डरों वाली एक ज़िप-फ़ाइल बनाते हैं, फ़ोल्डरों को svn में अनदेखा करते हैं और फिर ज़िप को इसके बजाय जोड़ते हैं। समस्या तब होती है जब हमें ज़िप में एक या अधिक फ़ाइलों को बदलने की आवश्यकता होती है, तो हमें रेपो में एक नया ~ 1 जीबी-ज़िप करने की आवश्यकता होती है।

+0

बस एक अनुमान: क्या ये विचलित फ़ाइलें डेटा हैं, और संस्करण वाली फ़ाइलें वास्तविक सॉफ्टवेयर हैं? –

+0

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

उत्तर

14

मैं परियोजना से कोई वेब या फ़ाइल सर्वर सभी की पहुंच में पर unversioned फ़ाइलें डाल चाहते हैं, और जोड़ने के एक स्क्रिप्ट स्वचालित रूप से (wget/scp/आदि।) फ़ाइलों को डाउनलोड करने (ज़िप किया गया यदि आवश्यक हो) और उन्हें निकालने svnignored फ़ोल्डर्स ताकि वे उपversण द्वारा उठाए न जाएं।

यदि आप इन फ़ाइलों को बदलने के बारे में चिंतित हैं, तो: उन्हें संस्करणित नहीं किया जाना चाहिए?

svn:externals इस स्थिति में भी उपयोगी हो सकता है। I सोचें उन्हें परिस्थितियों की अनुमति के रूप में आसानी से अनदेखा करने के लिए सेट अप किया जा सकता है।

+0

कभी svn में टेम्पलेट्स के साथ काम नहीं किया है। यदि फ़ाइल बाइनरी-फ़ाइल है तो क्या यह विधि काम करेगी? – Zooking

+0

टेम्पलेट द्वारा, मेरा मतलब है कि उपरोक्त में मौजूद फ़ाइल का एक सामान्य संस्करण बनाएं, लेकिन एक स्क्रिप्ट को सामान्य संस्करणों को सामान्य संस्करणों में स्वचालित रूप से कॉपी करें –

+0

आपके पास किस प्रकार की बाइनरी फ़ाइल है जो कुछ स्थानीय वातावरण पर भरोसा करेगी? संभावना है कि जो भी हो, आप शायद इसे बाइनरी से अलग कर सकते हैं। – drby

4

मैं एक स्क्रिप्ट तैयार करूंगा जो चलने पर कॉन्फ़िगरेशन फ़ाइलों को उत्पन्न करता है। इस तरह, आपको अपने एससीएम के रास्ते में आने की चिंता करने की आवश्यकता नहीं है।

2

बस इसके लिए टेम्पलेट फ़ाइल का उपयोग करें। मान लें कि आपकी फ़ाइल को config.txt कहा जाता है। फ़ाइल को देखें और कुछ मार्कर डालें जहां स्थानीय सेटिंग्स को जाना चाहिए, इसे configTemplate.txt पर पुनर्नामित करें और इसे प्रतिबद्ध करें। फिर प्रत्येक डेवलपर को फ़ाइल की जांच करनी चाहिए, इसकी एक प्रति बनाएं, फ़ाइल नाम के टेम्पलेट भाग को हटा दें (इसलिए सभी को सही config.txt मिल जाता है), और अनदेखा सूची में नई फ़ाइल जोड़ें। फिर या तो सभी को स्थानीय सेटिंग्स में मैन्युअल रूप से संपादित करने दें, जहां मार्कर टेम्पलेट फ़ाइल में हैं या उनके लिए ऐसा करने के लिए स्क्रिप्ट का उपयोग करें (यदि संभव हो)।

टेम्पलेट फ़ाइल कभी नहीं बदला जाता है (जब तक कि कॉन्फ़िगरेशन फ़ाइल के प्रारूप में कोई फर्क नहीं पड़ता)।

अपने संपादित (और टिप्पणी) के जवाब में:

छवियाँ, दस्तावेज और बाइनरी फ़ाइलें कि स्वचालित रूप से उत्पन्न नहीं कर रहे हैं शायद सब संस्करण नियंत्रण में रखा जाना चाहिए। या कम से कम मुझे उन्हें अपरिवर्तित रखने के लिए कोई अच्छा कारण नहीं दिख रहा है।

5

कुछ मामलों में प्रति डेवलपर web.config बनाने के लिए भी आवश्यक नहीं है, क्योंकि .NET कॉन्फ़िगरेशन प्रारूप कॉन्फ़िगरेशन स्रोत विशेषता के माध्यम से आपकी कॉन्फ़िगरेशन फ़ाइल के विशिष्ट अनुभागों को ओवरराइड करने की अनुमति देता है।

कॉन्फ़िगरेशन स्रोत विशेषता फ़ाइल नाम निर्दिष्ट करती है कि (जब फ़ाइल मौजूद है) निर्दिष्ट ब्लॉक को ओवरराइड करता है और जब यह अस्तित्व में नहीं होता है तो ब्लॉक का उपयोग किया जाता है।

<?xml version="1.0"?> 
<configuration> 
    <connectionStrings configSource="connections.config"> 
     <add name="LocalSqlServer" 
      connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true" 
      providerName="System.Data.SqlClient" /> 
    </connectionStrings> 
</configuration> 
डेवलपर प्रणाली तुम सिर्फ उसके लिए कनेक्शन के साथ एक connections.config जोड़ सकते हैं, जबकि शेष सेटिंग की साझा किया जा सकता पर

(तो यह टेम्पलेट्स में से समस्या हल नहीं होती है, लेकिन यह आप के रूप में कई छोटे एक बड़ा टेम्पलेट प्रबंधन में मदद कर सकते हैं)

3

आप पर पुनर्विचार करने के लिए कैसे आप subverion उपयोग कर रहे हैं की जरूरत है। सबवर्सन फाइलों के बारे में संस्करण जानकारी स्टोर करता है; न आधिक न कम। आप विचलित फ़ाइलों को विचलन में संग्रहीत नहीं कर सकते; कोई समझ नहीं आता है। Subversion में एक 1 जीबी ज़िप भंडारण कुछ भी अच्छा करने वाला नहीं है।

आपको इस तरह की फ़ाइलों को उपयोगकर्ता की होम निर्देशिका या शायद पर्यावरण चर में व्यक्तिगत कॉन्फ़िगरेशन फ़ाइलों के माध्यम से सेटिंग्स को ओवरराइड कर सकते हैं।

0

प्रत्येक प्रोग्रामर अपनी शाखा पर काम करने दें और उन्हें अपने परिवर्तनों को मुख्य शाखा/ट्रंक में विलय करने दें। बेशक, आपकी टीम के साथी को संस्करण नियंत्रण का उपयोग करके खरोंच तक पहुंचने की आवश्यकता है और केवल चेकआउट, अपडेट और प्रतिबद्ध से अधिक उपयोग करने में सक्षम होना चाहिए।

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