2010-12-21 16 views
6

मेरे पास Mercurial में एक फ़ाइल है कि मैं चाहता हूं कि देव मशीनें फ़ाइल खींचें, लेकिन मैं चाहता हूं कि तैनाती सर्वर फ़ाइल को खींच न सके (इसमें विशेष मोड हैं जो देव मशीनों के पास नहीं है) । क्या यह संभव है, या क्या मुझे सिर्फ एचजी पुल करने के बजाय सर्वर समाधान के लिए कस्टम पुश होना चाहिए?सशर्त Mercurial अनदेखा फ़ाइल

उत्तर

6

ऐसा करने के लिए निम्न कार्य करने के लिए किया जाएगा करने के लिए एक विशिष्ट तरीका:

आप भंडार में प्रत्येक फ़ाइल की एक प्रतिलिपि संग्रहीत करते हैं और उन्हें सही ढंग से नाम दें।

  • web.server.config
  • web.dev.config

तो फिर तुम एक निर्मित कदम जोड़ना होगा सही फ़ाइल सुनिश्चित करने के लिए: उदाहरण के लिए, अगर सवाल में फ़ाइल web.config है, तो आप भंडार में निम्नलिखित दो संग्रहीत करेंगे वास्तविक web.config फ़ाइल में प्रतिलिपि की गई, तो आप एक बैच फ़ाइल इस्तेमाल कर सकते हैं:

if "%COMPUTERNAME%" == "SERVER" copy web.server.config web.config 
if not "%COMPUTERNAME%" == "SERVER" copy web.dev.config web.config 

आप फिर .hgignore के माध्यम से web.config ही उपेक्षा होगा:

glob:web.config 
1

क्या यह ऐसा कुछ है जिसे संस्करण नियंत्रण के बाहर हल किया जा सकता है? उदाहरण के लिए, रिपॉजिटरी की सभी प्रतियों में फ़ाइल शामिल करें, लेकिन पर्यावरण चर या कुछ समान के साथ इसका उपयोग सक्षम या अक्षम करें। ऐसा लगता है कि अधिकांश वर्जन कंट्रोल सिस्टम को संभालने के लिए बनाया गया है, जब तक कि आप अद्यतन करने के बाद फ़ाइलों को जोड़ने/निकालने/पैच जैसी चीजों को करने के लिए ग़लत हैक का उपयोग न करें।

+0

मैं सहमत हूं, लेकिन यह फ़ाइल सर्वर और देव मशीनों पर दोनों आवश्यक है। यह वेब यूआरएल/डीबी कनेक्शन स्ट्रिंग्स/आदि के पथों के साथ एक सेटिंग फ़ाइल है, और ये मान देव मशीनों की तुलना में सर्वर पर अलग हैं। – Jan

+0

क्या वे अक्सर बदलते हैं? –

+0

अक्सर नहीं। – Jan

1

एक विकल्प तैनाती सर्वर, कि या भंडार में शामिल नहीं किया जा सकता है हो सकता है के लिए एक विशेष hgignore फ़ाइल बनाने के लिए है। फिर सर्वर की hgrc फ़ाइल में ignore चर के साथ विशेष hgignore फ़ाइल का पथ निर्दिष्ट करें।

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

2

कार्ल्सन के उत्तर का एक रूप जो मैं हमेशा उपयोग करता हूं।

मेरे पास /config या /etc प्रोजेक्ट में निर्देशिका है।

  • dev.yaml
  • ci_server.yaml

तब मेरे क्षुधा /etc/app.yaml जो मेजबान उस पर चलाया जा रहा है पर निर्भर करता है सही config करने के लिए एक सिमलिंक है से खींच: यह निर्देशिका अक्सर की तरह नमूना कॉन्फ़िगरेशन शामिल होंगे।

इस तरह से है कि आप संस्करण कोड पथ (बैच स्क्रिप्ट शाखाओं) जो एक संभावित बग वेक्टर समाप्त की जरूरत नहीं है यह करने के बारे में सबसे अच्छा लगता है। यह आपको उसी कोड पथ का उपयोग करने की अनुमति देता है जिसका उपयोग उत्पादन में किया जाएगा (नीचे ओवरराइड फ़ाइल को देखने के लिए कहां से)।

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