भंडार के भाग के रूप में भंडारण विन्यास जमा करना


147

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

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

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

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


टीम-वाइड कॉन्फ़िगरेशन को स्वचालित रूप से साझा करने के लिए आपको यह लिंक उपयोगी लग सकता है।
१०:२३ बजे एमएलजृग

जवाबों:


163

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

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

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

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

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

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

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


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

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

4
@HenryBlyth --fileपर एक विकल्प प्रतीत होता है git config, तो आप इसे अपने रेपो पर इंगित करने के लिए सेट कर सकते हैं .gitconfig। मैंने अभी तक इसका परीक्षण नहीं किया है, लेकिन यह आपके प्रश्न का उत्तर देता है। आप इसे डॉक्स पर पढ़ सकते हैं। git-scm.com/docs/git-config#FILES
TheUn77777

12
यदि आपकी सुरक्षा के खतरों के बारे में आपको ध्यान रखना है तो Git ने मान नहीं लिया है कि आप अपने org के बाहर वितरित कोड लिख रहे हैं। कभी-कभी सिस्टम प्रयोज्य और स्वचालन सुरक्षा की तुलना में एक उच्च प्राथमिकता है।
जियोर्डी

2
आप चुपके से कमांड को एक कार्य में जोड़ सकते हैं (यह मानकर कि आप एक कार्य धावक का उपयोग कर रहे हैं) अपनी टीम द्वारा नियमित रूप से उपयोग किया जाता है।
Mieszko

19

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

आप इसे इस तरह से लिंक कर सकते हैं:

[include]
  path = ../.gitconfig

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


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


@XmlmXmlmX को ठीक किया गया। :-)
तेनहबी

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

1
@NoviceC अगर वहाँ है तो फ़ाइल चाहिए। github.com/HoBi/dotfiles/blob/… मेरा मानना ​​है कि, आपको .itconfig या gitconfig.sh को git प्रोजेक्ट में संग्रहीत नहीं करना चाहिए - ये व्यक्तिगत सेटिंग्स हैं और इन्हें ~/फ़ोल्डर में आपकी वैश्विक सेटिंग्स में संग्रहीत किया जाना चाहिए । और हर किसी की अलग ज़रूरत हो सकती है, इसलिए git repo में अपने कॉन्फिग के साथ हर किसी को परेशान क्यों करें। :-)
तेनोबी

@tenhobi कुछ ऐसे कॉन्फ़िगर हैं जो किसी प्रोजेक्ट में साझा करने के लिए सभी के लिए दिलचस्प हो सकते हैं। मैं प्रोजेक्ट कोडिंग फ्लो के साथ
एलियासेस के लिए ऐसा करूंगा
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.