2009-09-04 10 views
7

मुझे एक लंबी समस्या है: काम पर हम एक डीएससीएम के रूप में Mercurial का उपयोग कर रहे हैं, लेकिन हम यह नहीं समझ सकते कि हमारी कॉन्फ़िगरेशन फ़ाइलों को सिंक में कैसे रखा जाए।Mercurial वर्कफ़्लो प्रश्न (कॉन्फ़िगरेशन फ़ाइलों को कैसे प्रबंधित करें)

समस्या यह है कि हम कॉन्फ़िगरेशन फ़ाइलों का ट्रैक रखना चाहते हैं और डेवलपर्स के बीच कॉन्फ़िगरेशन फ़ाइल सामग्री का आदान-प्रदान करने में सक्षम होना चाहते हैं, लेकिन प्रत्येक डेवलपर अपने कनेक्शन को अन्य अनुभागों से स्वतंत्र करना चाहता है।

क्या किसी भी तरह से कॉन्फ़िगरेशन फ़ाइलों को ट्रैक करना संभव है लेकिन खींचने और धक्का देने पर कनेक्शन स्ट्रिंग अनुभाग को छोड़ना संभव है?

हमने कॉन्फ़िगरेशन फ़ाइलों को .hgignore में जोड़ने का प्रयास किया लेकिन जब कोई कॉन्फ़िगरेशन फ़ाइल में कुछ महत्वपूर्ण जोड़ता है तो हमें इसे ईमेल द्वारा साझा करना होगा।

धन्यवाद।

उत्तर

6

यदि आप कस्टम सेटिंग्स को शामिल करने के साथ इसका सामना नहीं कर सकते हैं, तो बस रेपो में बेस कॉन्फ़िगरेशन फ़ाइल लें।

फिर प्रत्येक डेवलपर ने शीर्ष पर (एमक्यू के साथ) अपना स्वयं का अनुकूलन रखा है। यदि अनुकूलन बहुत घुसपैठ नहीं है तो विलय हमेशा अच्छा रहेगा।

एक और तरीका है, जहां आप बार-बार अपने अनुकूलन विलय, लेकिन तब जब धक्का आप मर्ज शाखा पुश करने के लिए नहीं याद नहीं है (tX, मुख्य लाइन है c1 अनुकूलन है)

t1-t2-t3-t4-...-tN 
    \ \  \ \ 
    c1---c2-----c3--c4 

देव की जरूरत है और उन परिवर्तनों को दबाएं जिनके पास केवल tX है, माता-पिता, cX को रेपो से कभी नहीं बचना चाहिए।

1

गैर-डीवीसीएस इसे संभालने का तरीका अलग कॉन्फ़िगरेशन फ़ाइल से कनेक्शन स्ट्रिंग को पढ़ने के लिए अपनी बिल्ड प्रक्रिया सेट अप करना है और फिर निर्माण प्रक्रिया के दौरान इसे प्रीप्रोसेस करना है (जावा में आप गुणों से फ़िल्टर करने के लिए चींटी या मेवेन का उपयोग कर सकते हैं फ़ाइल, मुझे एमएस-भूमि के बारे में पता नहीं है)।

4

मुझे आपकी कॉन्फ़िगरेशन फ़ाइलों का विवरण नहीं पता है, लेकिन यदि आप अन्य फाइलें शामिल कर सकते हैं, तो डेवलपर-विशिष्ट सेटिंग्स को पकड़ने के लिए config_local फ़ाइल बनाएं। उस फ़ाइल को .hgignore पर जोड़ें। सामान्य सेटिंग्स मुख्य कॉन्फ़िगरेशन फ़ाइल में जाती हैं, जिसमें config_local फ़ाइल शामिल होती है।

जैसा कि केन कहते हैं, यदि समावेशन एक विकल्प नहीं है, तो निर्माण चरण के दौरान प्रीप्रोसेसिंग जाने का तरीका हो सकता है।

3

आप इसे करने के लिए Mercurial Queues का उपयोग कर सकते हैं। तो आप क्या करेंगे "एचजी (उनके वास्तविक नामों के साथ) के तहत" असली "कॉन्फ़िगरेशन है, और डेवलपर शीर्ष पर बैठे पैच का उपयोग करके अपने अनुकूलन को बनाए रख सकते हैं और एमक्यू के साथ बनाए रखा जा सकता है।

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

अन्य सभी डेवलपर्स को मानते हुए उन विशेष परिवर्तनों को अपने स्वयं के कतारों में ओवरराइड नहीं किया गया है, वे उन्हें अगली बार + अपडेट खींचेंगे।

0

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

db.host = $DBHOST$ 
db.host = $DBUSER$ 
db.host = $DBPASS$ 

और फिर उनके ~/में।एचजीआरसी फाइल उपयोगकर्ता के पास ऐसा कुछ होगा:

[extensions] 
hgext.keyword= 
[keyword] 
# expand keywords in all python files in working dir 
**.conf = 
[keywordmaps] 
DBHOST = dev.server.internal 
DBUSER = myname 
DBPASS = mypass 

उत्पादन, निश्चित रूप से, इसका अपना होगा। एचआरजीसी।

इस योजना के लिए सभी को एक बार सेट अप समय की लागत होगी, लेकिन इसके बाद यह स्वचालित होना चाहिए। यदि उपयोगकर्ता अपना निजी कनेक्शन स्ट्रिंग सेट नहीं करना चाहता है तो डिफ़ॉल्ट सिस्टम-वार/आदि/Mercurial/hgrc फ़ाइल में हो सकता है।

1

अपनी कनेक्शन स्ट्रिंग को एक अलग फ़ाइल में रखें। जैसे web.config में:

<connectionStrings configSource="connections.config" /> 

तो फिर तुम कनेक्शन तार है, जो आप रिपोजिटरी से बाहर कर सकते हैं जिससे दे हर डेवलपर अपने दिल की सामग्री के लिए संशोधित के साथ एक connections.config फ़ाइल है।

यदि आप कनेक्शन.कॉन्फिग फ़ाइल का 'संदर्भ' संस्करण चाहते हैं तो बस एक और फ़ाइल connections.example.config जोड़ें जो स्रोत नियंत्रण में है, और इसे अपने टेम्पलेट संस्करण के रूप में उपयोग करें।

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

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