2013-08-20 6 views
83

के हिस्से के रूप में गिट कॉन्फ़िगरेशन संग्रहीत करना मैं here वर्णित चेकआउट के दौरान फ़ाइलों को मैंगल करने के लिए फ़िल्टर का उपयोग कर रहा हूं। अब समस्या यह है कि फिल्टर परिभाषा केवल अपने स्थानीय विन्यास फ़ाइल में संग्रहीत किया जाता है:भंडार

$ cat .git/config 
.... 
[filter "dater"] 
     smudge = /home/.../expand_date 
     clean = perl -pe \"s/\\\\\\$Date[^\\\\\\$]*\\\\\\$/\\\\\\$Date\\\\\\$/\" 

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

तो क्या मैं भंडार में .git/config के इस फ़िल्टर परिभाषा भाग को संग्रहीत कर सकता हूं और गिट का उपयोग कर सकता हूं?

उत्तर

85

.gitconfig फ़ाइल के 3 समर्थित स्कॉप्स हैं: --system, --global, --local। आप कस्टम कॉन्फ़िगरेशन फ़ाइल भी बना सकते हैं, और इसे समर्थित फ़ाइलों में से एक में शामिल कर सकते हैं।

आपकी आवश्यकताओं के लिए कस्टम - सही विकल्प है। इसके बजाय .git/config में अपने फ़िल्टर लिखने की आप अपने भंडार जड़ में .gitconfig फ़ाइल में सहेजने चाहिए:

your-repo/ 
│ 
├── .git/ 
│ ├── config 
│ 
├── .gitconfig 
│ 

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

एक भी रिपोजिटरी के लिए इस विन्यास को लागू करने के लिए, प्रत्येक उपयोगकर्ता your-repo/ में निम्न आदेश चलाने की आवश्यकता होगी:

git config --local include.path ../.gitconfig 

नहीं user.* की तरह, कस्टम .gitconfig में व्यक्तिगत डेटा स्टोर करने के लिए सावधान रहें, में उन रखना आपका वैश्विक .gitconfig

+14

पा सकते हैं मैं हर संभव उपयोगकर्ता है कि यह में रेपो के '.gitconfig' शामिल करने के लिए की जरूरत है यह सूचना देने से बचना चाहते हैं उसकी' ~/.gitconfig'। कोई भी इसे याद नहीं रखेगा। क्या गिट को हमेशा रेपो के '.gitconfig' को पढ़ने का कोई तरीका है। –

+6

@ZarHai: मैं अनुमान लगा रहा हूं, क्योंकि यह खतरनाक होगा। (कल्पना करें कि एक रेपो क्लोनिंग है जो कुछ "रोचक" के साथ आदेशों को उपनाम करता है, उदाहरण के लिए। अपने घर की सामग्री का निर्यात करना)। यदि आपके पास कुछ 'कॉन्फ़िगरेशन' स्क्रिप्ट या समान है जैसे उपयोगकर्ता को चलाना चाहिए, तो आप उसमें शामिल हो सकते हैं (या उपयोगकर्ता को संकेत दें)। – Hasturkun

+1

रीप की अपनी .gitconfig फ़ाइल का उपयोग करने के लिए आप गिट को कैसे बताते हैं? मैंने एक बनाया है लेकिन इसे पार्स नहीं किया जा रहा है। –

11

आप डिफ़ॉल्ट रूप से गिट रिपॉजिटरी में .gitconfig फ़ाइल का उपयोग नहीं कर सकते हैं, लेकिन आप इसे लिंक कर सकते हैं ताकि गिट कॉन्फ़िगरेशन संस्करणित हो।

आपको लगता है कि जैसे कि यह करने के लिए लिंक कर सकते हैं:

[include] 
    path = ../.gitconfig 

मैं एक साधारण स्क्रिप्टgitconfig.sh जो (बहुत तेजी से नकल से) यह तुम्हारे लिए क्या + सरल .gitconfig फ़ाइल बनाया है, इसलिए यदि आप चाहते हैं, एक ले इस रेपो https://github.com/HoBi/dotfiles पर देखें।


संपादित: मैं फ़ाइल नष्ट कर दिया है, लेकिन आप इसे यहाँ https://github.com/HoBi/dotfiles/blob/7e4376c006c508370b82bc7bd37173fab51dbd01/git/.gitconfig.sh

+1

आपका लिंक मर चुका है ... – Sebastian

+0

@XmlmXmlmX निश्चित। :-) – HoBi

+0

@ होबी ऐसा लगता है कि आपने अब गिटहब से अपना gitconfig.sh हटा दिया है, किसी भी कारण से आप इसे और क्यों नहीं चाहते थे? –

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