2010-03-04 8 views
6

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

उत्तर

4

दिलचस्प सवाल, मुझे आशा है कि आपको एक बेहतर उत्तर मिलेगा।

  • का नाम बदलें विन्यास फाइल, ताकि उदाहरण के लिए, के बजाय noweb.cfg मैं noweb.cfg.default है: सामना इसी तरह की समस्याओं, मैं निम्नलिखित किया है। यह फ़ाइल शायद ही कभी बदलती है और संशोधन नियंत्रण के तहत रखी जाती है।

  • वास्तविक कॉन्फ़िगरेशन फ़ाइल, noweb.cfg, अक्सर बदल सकती है लेकिन .hgignore फ़ाइल में डाल दी गई है, इसलिए यह कभी भी प्रतिबद्ध नहीं है।

  • आवश्यकता पर मेरे पास एक विशेष मेकफ़ाइल लक्ष्य है जो *.cfg.default से *.cfg पुनर्निर्माण करता है।

यह समाधान आदर्श क्योंकि .cfg फ़ाइलों में परिवर्तन खो रहे हैं जब .cfg.default परिवर्तन नहीं है। सिद्धांत रूप में आप diff3 या कुछ और परिष्कृत विलय उपकरण के साथ इस मुद्दे से निपट सकते हैं, लेकिन मैं वहां जाने के लिए पर्याप्त ऊर्जावान कभी नहीं रहा हूं।

3

आप (बहुत बदनाम) चूक खंड अपने .hgrc में इस्तेमाल कर सकते हैं:

[defaults] 
    commit = -X thefileyouwanttoexclude 

आप अपनी उंगलियों को ऐसा करने के लिए पसंदीदा तरीका फिर से सीखें कर सकते हैं, तो इसके बजाय एक उपनाम के साथ है:

[alias] 
    cmt = commit -X thefileyouwanttoexclude 

फिर आप प्रतिबद्ध होने के बजाय hg cmt का उपयोग शुरू करते हैं।

+1

आप "बहुत बदनाम" क्यों कहते हैं? क्या यह फहरा हुआ है? या बस अच्छी तरह से जाना जाता है? –

+1

यह ठीक काम करता है, लेकिन एमपीएम, मर्क्यूरियल के निर्माता ने [डिफ़ॉल्ट] को हटा दिया है। यह डिज़ाइन द्वारा, अदृश्य तरीकों से कौन से आदेश करता है, बदलता है, इसलिए उन आदेशों का उपयोग करने वाली स्क्रिप्ट या एक्सटेंशन उन आदेशों के साथ आदेश चला रहे हैं जिनके वे इरादा नहीं कर सकते हैं। उदाहरण के लिए, यदि मैं "[डिफ़ॉल्ट] \ npush = -f" करता हूं क्योंकि मैं हमेशा उपयोग करना चाहता हूं -फ ठीक है, लेकिन यदि कोई स्क्रिप्ट बिना 'पुश' का उपयोग करती है क्योंकि यह सुनिश्चित करना चाहता है कि नया न बनाएं रिमोट हेड, वह स्क्रिप्ट इसका उपयोग कर रही होगी- fw/o इसे जानना। उपनाम केवल सुरक्षित हैं और लगभग एक ही चीज़ को पूरा करते हैं, बशर्ते कोई अपनी अंगुलियों को रोक सके। –