2015-08-25 7 views
5

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

ऐसा लगता है कि यह करने योग्य होना चाहिए, लेकिन इसके लिए खोज करना बहुत मुश्किल रहा है, मुझे लगता है कि कोई छोटा हिस्सा नहीं है क्योंकि "स्थानीय" और "कैश" शब्द विशेष रूप से गिट (हब) प्रश्नों के लिए अर्थों को अधिभारित कर चुके हैं।

+2

* प्रत्येक * भंडार * एक 'स्थानीय कैश' है। – user2864740

+0

क्या आप बस अपनी स्थानीय '.git' repo फ़ाइल का बैकअप नहीं ले सकते? –

+0

यह एक प्रदर्शन अनुकूलन है, बैकअप नहीं। मैं नियमित उपयोगकर्ताओं को "गिट पुल" या "गिट क्लोन" या जो कुछ भी करना चाहता हूं, और उस अनुरोध को github.com पर जाने के बजाय, मैं चाहता हूं कि यह कुछ स्थानीय सर्वर पर जाए, जिसमें रेपो की कैश की गई प्रति है .. प्रक्रिया को काफी तेजी से बनाना। हम स्वचालित परीक्षण में हर दिन कई पूर्ण क्लोन करते हैं, और भौगोलिक दृष्टि से डिस्क पर रहने वाले रेपो की प्रतिलिपि बनाने से चीजें बहुत तेज हो जाती हैं। – ljwobker

उत्तर

4

आपकी नवीनतम टिप्पणी यह ​​स्पष्ट करती है कि आप एक प्रदर्शन अनुकूलन की तलाश में हैं। यह सहायता करता है।

आप these instructions के बाद जिथब रिपोजिटरी का स्थानीय दर्पण बनाने शुरू कर सकते हैं। आप या तो समय-समय पर इसे अपडेट कर सकते हैं, या "मांग पर" स्थानीय दर्पण को अपडेट करने के लिए जिथब से web hooks प्राप्त करने की व्यवस्था कर सकते हैं। ऐसा करने के लिए आपको एक छोटी सी वेब सेवा स्थापित करने की आवश्यकता होगी जो कि जिथब से हुक का जवाब देगी। आप https://github.com/someuser/someproject/settings/hooks/new पर जाकर एक वेब हुक जोड़ सकते हैं। आप शायद "मुझे अलग-अलग घटनाओं का चयन करते हैं" रेडियो बटन का चयन करना चाहते हैं, और उसके बाद का चयन करें:

  • हटाना
  • धक्का

बनाते हैं, यह ऊपर से अपने कैश रहेंगे उपलब्ध टैग और शाखाओं में परिवर्तन के संबंध में दिनांक।

एक गिट सर्वर सेट अप करें जो उस भंडार को स्थानीय रूप से उपलब्ध कराएगा। यह आपकी स्थानीय आवश्यकताओं के आधार पर git daemon, या एसएसएच के माध्यम से सुलभ स्थानीय खाता, या कुछ अधिक पूर्ण विशेषताओं के रूप में सरल हो सकता है।

तो फिर तुम इस तरह अपने स्थानीय काम कर रहे प्रतियां सेट होगा:

$ git clone http://localrepository/someproject.git 
$ cd someproject 
$ git remote set-url --push http://github.com/someuser/someproject.git 

यह अपने स्थानीय कैश से पुल करने के लिए प्रत्येक भंडार की स्थापना की है, लेकिन GitHub के लिए नदी के ऊपर परिवर्तन धक्का।

1

आपको git-cache-http-server project देखें। मुझे लगता है कि यह आपको आंशिक रूप से लागू करता है जो आपको चाहिए (और @larsks पोस्ट से विचार के समान है)।

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

तो आपको एक अलग मेजबान पर Git-संचय-http-सर्वर (VM या उदाहरण के लिए कंटेनर) चलाते हैं, तो आप अपने स्थानीय Git क्लाइंट कॉन्फ़िगर कर सकते हैं स्वचालित रूप से क्लोन और यह कॉन्फ़िगर करके कैश से लाने के लिए कुछ के साथ https://github.com को बदलने के लिए http://gitcache/github.com की तरह। इस तरह एक विन्यास के द्वारा प्राप्त किया जा सकता है:

git config --global url."http://gitcache:1234/".insteadOf https:// 

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

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