क्या कॉन्फ़िगरेशन फ़ाइल संस्करण को नियंत्रित करने के लिए गिट का उपयोग करना एक अच्छा विचार है?


18

मैं जेंटू लिनक्स का उपयोग करता हूं और इसमें जटिल विन्यास है। मेरा प्रश्न यह है कि मेरी कॉन्फिग फाइलों को नियंत्रित करने वाले संस्करण के लिए git का उपयोग करना बुद्धिमानी है?

मेरे घर में कुछ गिट रिपॉजिट हैं, मेरा अनुमान है कि अगर मैं अपने घर को / ** अपने .itignore में डाल दूं तो उन्हें समस्या नहीं होगी।

स्पष्टीकरण अद्यतन:

क्या यह "/" रूट निर्देशिका में मेरे सिस्टम स्तर विन्यास फाइल को नियंत्रित करने के लिए git का उपयोग करने के लिए एक बुद्धिमान विधि है?


@AnthonyGeoghegan मैं अपने "/" रूट निर्देशिका को ट्रैक करना चाहता हूं जो भविष्य में दिलचस्प परिणाम पैदा कर सकता है इसलिए लिंक किए गए धागे केवल आंशिक रूप से मेरे प्रश्न का उत्तर देते हैं। अन्य भाग: क्या यह
समझ में आता है कि

1
@AnthonyGeoghegan धन्यवाद मैंने सवाल अपडेट किया।
atevm

जवाबों:


19

आपके प्रश्न का संक्षिप्त उत्तर हां है


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

व्यक्तिगत रूप से, मैं /रूट डायरेक्टरी के तहत सभी फाइलों को ट्रैक करने से सावधान रहूंगा । अनदेखा करने के लिए रास्तों की सूची बड़ी और अस्पष्ट हो सकती है। मैं फ़ाइलों के प्रत्येक तार्किक सेट को अपने स्वयं के भंडार में रखना पसंद करता हूं।

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

के लिए प्रणाली विन्यास फाइल, मैं साथ Git का उपयोग Etckeeper मेरे में फ़ाइलों का ट्रैक रखने के /etcनिर्देशिका।

कमियां

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

Etckeeper

एटकीपर का उपयोग / आदि में किए गए परिवर्तनों का पूरा इतिहास रखने के लिए किया जा सकता है। यह फाइल मेटाडेटा को ट्रैक करता है कि रिवीजन कंट्रोल सिस्टम सामान्य रूप से समर्थन नहीं करता है, लेकिन इसके लिए महत्वपूर्ण है /etc, जैसे कि अनुमतियाँ /etc/shadow

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

यदि एक पैकेज स्थापित या हटाया जाता है, तो पैकेज संचालन से पहले / अनकही सभी परिवर्तन किए जाएंगे ताकि दो आवागमन हो सकें:

  1. "यम रन से पहले / आदि में अनधिकृत परिवर्तन सहेजना"
  2. "यम रन के बाद / आदि में बदलाव"

मैंने इसे डेबियन और रेड हैट-आधारित वितरण के साथ उपयोग किया है और मुझे पता है कि यह आर्क पैकेज प्रबंधन का समर्थन करता है। मैं यह नहीं कह सकता कि यह जेंटू प्रणाली में कितना स्वचालन जोड़ देगा लेकिन इसके लिए एक पैकेज उपलब्ध है

यह कॉन्फ़िगरेशन फ़ाइलों को दूरस्थ रिपॉजिटरी में पुश करने का भी समर्थन करता है (जो निश्चित रूप से, निजी होना चाहिए)।

विन्यास

पैकेज को स्थापित करने के बाद आपको इसे कॉन्फ़िगर करने की आवश्यकता हो सकती है ( /etc/etckeeper/etckeeper.conf), उदाहरण के लिए, उबंटू सिस्टम पर डिफ़ॉल्ट संस्करण नियंत्रण प्रणाली को गिट से बाजार में बदल दिया जाता है। आप दैनिक ऑटो-कमिट को अक्षम करना भी पसंद कर सकते हैं ।

दैनिक ऑटोकॉमिट

दैनिक क्रोन जॉब द्वारा परिवर्तन स्वचालित रूप से किए जा सकते हैं । यह कष्टप्रद हो सकता है क्योंकि रिपॉजिटरी कई स्वचालित प्रतिबद्ध संदेशों के साथ बंद हो सकती है।

मैं इसमें उपयुक्त पंक्ति को बताता हूं /etc/etckeeper/etckeeper.conf:

sed -i '/AVOID_DAILY_AUTOCOMMITS/s|^#* *||' /etc/etckeeper/etckeeper.conf

कुछ फाइलों पर ध्यान न दें

/etc/.gitignoreउन फ़ाइलों को निर्दिष्ट करने के लिए संपादित करें जिन्हें ट्रैक नहीं किया जाना चाहिए।

प्रथम रन

कॉन्फ़िगर करने के बाद, निम्न कमांड चलाएँ:

sudo etckeeper init
sudo etckeeper commit "Initial commit"

यदि आपकी वर्तमान निर्देशिका है etc, तो आप नियमित gitकमांड चला सकते हैं , जैसे,

sudo git status
sudo git log

1
वाह, यह बहुत उपयोगी और विस्तृत था ... धन्यवाद :)
atevm

बस एक बहुत अच्छी तरह से लिखित उत्तर को अपडेट करने के लिए : etckeeperदैनिक प्रतिबद्ध के दौरान वास्तव में पहले जांच करेगा कि /etcक्या "अशुद्ध" है, अर्थात, इसके पास फाइलें नहीं हैं। यदि नहीं, तो यह प्रतिबद्ध नहीं होगा। तो अगर आपका कमिट लॉग दैनिक रूप से भरा हुआ है, तो संभावना है कि ऐसी फाइलें हैं जो रोज बदल जाती हैं जिन्हें आपने .*ignoreफ़ाइल में नहीं जोड़ा है :-)
pepoluan

इसके अलावा, उबंटू पर यह तुरंत एक bzr initअनियमित प्रदर्शन करता है --__-- ... मैं हमेशाetckeeper uninit -f स्थापना के बाद चलने की सलाह देता हूं ।
16

ध्यान दें, कि etckeeper जाहिर है अब github पर होस्ट नहीं किया गया है। वे अपने स्वयं के सिस्टम का उपयोग अब अपने मुखपृष्ठ पर करते हैं। शायद लेखक के पक्ष में कुछ एम $ का फैलाव। व्यक्तिगत रूप से मुझे लगता है कि एक दुर्भाग्यपूर्ण निर्णय अब आप आसानी से मुद्दों की रिपोर्ट नहीं कर सकते हैं और यह नहीं देख सकते हैं कि परियोजना कितनी लोकप्रिय है।
माइकल एचएएर्टल

धन्यवाद @ MichaelHärtl मैंने GitHub रेपो की पुरानी लिंक हटा दी है।
एंथोनी गोगेगन

3

मैं अपने घर निर्देशिका के विशिष्ट क्षेत्रों को ट्रैक करने के लिए गिट का उपयोग करता हूं। व्यक्तिगत रूप से, मैं रूट डायरेक्टरी पर नज़र रखने के रास्ते से नहीं हटूंगा, लेकिन मुझे कहना होगा कि मैं आपकी महत्वाकांक्षा की प्रशंसा करता हूं। :)

शायद अनुभवों का यह संग्रह आपको एक बेहतर विचार प्रदान कर सकता है कि आप क्या कर रहे हैं:

लाइनक्स रूट डायरेक्टरी 3 पर गिट रिपॉजिटरी को आरम्भ करने के प्रभाव :)

एक टिप्पणी में लिंक को फेंकने के बजाय "उत्तर" के लिए माफी; हालांकि, पर्याप्त प्रतिनिधि नहीं है, लेकिन में झंकार करना चाहते हैं।

संपादित करें

वाह! @AnthonyGeoghegan द्वारा बहुत अच्छा जवाब। मुझे विश्वास है कि यह उतना संघर्ष नहीं है जितना मैंने मूल रूप से इसकी कल्पना की है।


0

मैं भी gitस्टोर करने और अपने को बनाए रखने के लिए उपयोग करता हूं dotfiles, लेकिन एक में git bare repository। एक विस्तृत गाइड यहाँ पाया जा सकता है । मैं दो रिपॉजिटरी का उपयोग कर रहा हूं, एक मेरे उपयोगकर्ता डॉटफाइल्स नाम के लिए myconfऔर एक रूट के डॉटफाइल्स नाम के लिएrootconf

इसके अतिरिक्त आप कई मशीनों, विभिन्न लिनक्स वितरण या वर्चुअल मशीनों पर दोनों कॉन्फ़िगरेशन का उपयोग कर सकते हैं: बस एक अलग कॉन्फ़िगरेशन के लिए एक नई शाखा बनाएं। फिर आप एक ही फाइल (जैसे .bash_alias) में कोड मिलाने से बचते हैं : यदि वर्तमान मशीन को किसी भी अधिक जांचने के लिए कोई कष्टप्रद नहीं है; nore कोई लिंक की जरूरत है!

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.