नंगे हड्डियाँ ब्राउज़र
git instaweb --httpd=webrick
से Git एससीएम किताब
वितरित विकास के लिए यहाँ वर्णित दृष्टिकोण के साथ इसे कुछ मिलाएं ( अच्छी तरह से वर्णित अवधारणा के लिए डेटाग्रोक को क्रेडिट )
किसी भी स्थानीय रिपॉजिटरी से वन-ऑफ गिट सर्वर लॉन्च करें।
मैंने यह पहले ही ट्वीट कर दिया था लेकिन मुझे लगा कि यह कुछ विस्तार का उपयोग कर सकता है:
विकेन्द्रीकृत git वर्कफ़्लो को सक्षम करें: git config alias.erve "डेमॉन --verbose --export-all --base-path = .it --reuseaddr --strict-path .it /"।
मान लें कि आप एक git वर्कफ़्लो का उपयोग करते हैं जिसमें एक कोर "आधिकारिक" रिपॉजिटरी के साथ काम करना शामिल है जिसे आप अपने परिवर्तनों को खींचते हैं और इसमें से धक्का देते हैं। मुझे यकीन है कि कई कंपनियाँ ऐसा करती हैं, जैसे कि गीथब की सेवाओं की तरह कई उपयोगकर्ता भी इसकी मेजबानी करते हैं।
उस सर्वर या Github का कहना है, थोड़ा नीचे चला जाता है।
कोई चिंता नहीं, आखिरकार, आप जिन कारणों से गिट का उपयोग करते हैं उनमें से एक आपके स्थानीय क्लोन में पूरे प्रोजेक्ट इतिहास की एक प्रति है।
आप कोडिंग और कमिटिंग पर सही रख सकते हैं, जबकि आप सर्वर को वापस जीवन में लाने के लिए ऑपरेशन टीम की प्रतीक्षा करते हैं। स्वयं पर ध्यान दें: ऑपरेशन टीम के लिए डोनट्स खरीदें।
लेकिन क्या होगा अगर, इस डाउनटाइम के दौरान, आप किसी अन्य व्यक्ति के साथ सहयोग करना चाहते हैं, जो एक ही रिपीटरीटरी पर एक गिट विशेषज्ञ नहीं हो सकता है?
या, डाउनटाइम के बजाय, क्या होगा यदि आप और आपके सहयोगी क्षेत्र में हैं, और किसी कारण से आप अपने वीपीएन को अपने आधिकारिक रेपो से जुड़ने नहीं दे सकते हैं?
या, क्या होगा यदि आप और आपके सहयोगी प्रायोगिक परिवर्तनों का एक समूह बना रहे हैं, और आपके पास पहुंच होने के बावजूद, आप अपने अधूरे गड़बड़ को आधिकारिक केंद्रीय भंडार में नहीं धकेलना चाहते हैं? (फीचर शाखाओं के रूप में भी नहीं।) शायद आप एक विनाशकारी रिबेस या मर्ज को साफ करने के बीच में हैं और शाखाएं सभी जगह हैं।
ठीक है, जीआईटी, जैसा कि आप शायद जानते हैं, एक "वितरित" संस्करण नियंत्रण प्रणाली है ।
भले ही आप अपने वर्कफ़्लो में एक केंद्रीय "आधिकारिक" गिट रिपॉजिटरी का उपयोग कर सकते हैं, फिर भी आपके पास सहकर्मी से सहकर्मी तरीके से गिट का उपयोग करने की क्षमता है, जहां आप और आपके सहयोगी बस एक दूसरे के साथ कमिट बनाते हैं और साझा करते हैं, और केंद्रीय सर्वर को कभी पता भी नहीं चलता।
तो, आप अपनी शाखाएँ कैसे प्राप्त करते हैं और उन पर काम करते हैं, या इसके विपरीत?
- आप ई-मेलिंग पैच के लिए git की सुविधाओं का उपयोग कर सकते हैं। लेकिन यह थोड़ा अटपटा है और ई-मेल वाले पैच को कैसे लागू किया जाए, इसके कुछ ज्ञान की आवश्यकता होती है।
- आप अपने सहयोगी के लिए ssh में अपनी मशीन पर एक खाता बना सकते हैं। लेकिन हो सकता है कि आपके पास स्थानीय रूट एक्सेस न हो, या हो सकता है कि आप एसएसएच एक्सेस के साथ उन पर भरोसा न करें।
- आप अपने रेपो को एक थंबड्राइव पर क्लोन कर सकते हैं और इसे आगे-पीछे कर सकते हैं। लेकिन यह बल्कि थकाऊ है, खासकर यदि आप एक ही स्थानीय नेटवर्क पर होते हैं, और एक अंगूठे ड्राइव की आवश्यकता होती है।
आप शायद अन्य तरीकों के बारे में भी सोच सकते हैं। लेकिन एक सुपर आसान तरीका है: यदि आप नेटवर्क पर एक-दूसरे को देख सकते हैं, तो आप एक-बंद गिट सर्वर लॉन्च कर सकते हैं, जिसका उपयोग वे अपने रिमोट के रूप में क्लोन करने, लाने और अपने परिवर्तनों को खींचने के लिए कर सकते हैं और जब आप इसे मार सकते हैं इसके साथ किया।
इसे सक्षम करने वाला उपकरण है git daemon
, जिसमें बहुत सारे विकल्प और कार्यक्षमता है, लेकिन इस आसान को सक्षम करने के उद्देश्य से "मैं जिस रेपो में हूं, उसकी सेवा करें", इसका उपयोग करने का तरीका एक उपनाम बनाना है। मुझे इसे कॉल करना पसंद है git serve
। Daud:
git config --global alias.serve "daemon --verbose --export-all --base-path=.git --reuseaddr --strict-paths .git/"
एक उपनाम का उपयोग करना वास्तव में महत्वपूर्ण है, क्योंकि गिट उपनाम को आपके कार्यशील पेड़ की आधार निर्देशिका में निष्पादित किया जाता है। इसलिए मार्ग '.git' हमेशा सही जगह पर इंगित करेगा, चाहे आप अपनी रिपॉजिटरी के डायरेक्टरी ट्री के भीतर ही क्यों न हों।
अपने नए का उपयोग करें git serve
:
- भागो
git serve
। "रंबल के लिए तैयार है," यह रिपोर्ट करेगा। गित बुरा-गधा है।
- अपने आईपी पते का पता लगाएं। कहो तो 192.168.1.123 है।
- कहो "हे जेन, मैं तैयार नहीं हूं / इन कमिट्स को मूल तक धकेलने में सक्षम हूं, लेकिन आप मेरे कॉमन्स को अपने क्लोन में ला सकते हैं
git fetch git://192.168.1.123/
"
- जब आप उस रेपो की सेवा नहीं करना चाहते हैं तो ctrl + c दबाएं।
आप जेन को यह भी बता सकते हैं कि git clone git://192.168.1.123/ local-repo-name
क्या उसके पास अभी तक रिपॉजिटरी का क्लोन नहीं है। या, git pull git://192.168.1.123/ branchname
एक बार करने के लिए उपयोग करें और एक बार में मर्ज करें, यदि आप एक सुविधा शाखा पर एक साथ काम कर रहे हैं।
ध्यान दें कि यदि आप अपने रिपॉजिटरी में रहस्य रखते हैं, तो आपको शत्रुतापूर्ण नेटवर्क पर ऐसा नहीं करना चाहिए, क्योंकि कोई प्रमाणीकरण नहीं है। यह अपने अस्तित्व का विज्ञापन नहीं करता है, लेकिन आ पोर्ट स्कैनर वाला कोई भी व्यक्ति इसे पा सकता है, इससे जुड़ सकता है और अपने रेपो को क्लोन कर सकता है।
लेकिन यह सुपर खतरनाक नहीं है क्योंकि यह केवल डिफ़ॉल्ट रूप से पढ़ा जाता है। git daemon
मैन पेज को ध्यान से पढ़ें अगर आपको लगता है कि आप लेखन पहुंच को सक्षम करना चाहते हैं। उस स्थिति में जहां आप अपने सहयोगी के कमिट को प्राप्त करना चाहते हैं, इसे केवल पढ़ने के लिए छोड़ना अधिक सुरक्षित है, और अपने सहयोगी से इस कमांड को चलाने के लिए भी कहें, ताकि आप उनसे खींच सकें।
तात्कालिक रूप से संबंधित: एक-ऑफ सर्वर के विषय पर, यदि आप अस्थायी रूप से HTTP पर स्थिर फ़ाइलों का एक गुच्छा साझा करना चाहते हैं: python -m SimpleHTTPServer