2012-10-12 16 views
9

मैं वर्तमान में एक बड़े भंडार के लिए गिट का उपयोग कर रहा हूं (लगभग 12 जीबी, प्रत्येक शाखा में 3 जीबी का आकार है)। इस संग्रह में बहुत सारी बाइनरी फ़ाइलें (ऑडियो और छवियां) शामिल हैं।एक बड़े गिट भंडार को कैसे संभालें?

समस्या यह है कि क्लोन और पुल में बहुत समय लग सकता है। विशेष रूप से "हल करने वाले डेल्टा" चरण बहुत लंबे हो सकते हैं।

इस तरह की समस्या को हल करने का सबसे अच्छा तरीका क्या है?

मैंने डेल्टा संपीड़न को हटाने की कोशिश की, क्योंकि यह here को .gitattributes में डेल्टा विकल्प का उपयोग करके समझाता है लेकिन ऐसा लगता है कि यह क्लोन अवधि में सुधार नहीं करता है।

अग्रिम धन्यवाद

केविन

+0

मैंने गिट-एलटीएस के साथ अपना जवाब अपडेट किया है। – VonC

उत्तर

12

अद्यतन अप्रैल 2015: Git Large File Storage (LFS) (GitHub द्वारा)।

यह का उपयोग करता है git-lfs (देखें git-lfs.github.com) और एक सर्वर से इसका समर्थन के साथ परीक्षण किया: lfs-test-server:
आप मेटाडाटा केवल Git रेपो में स्टोर कर सकते हैं, और दूसरी जगहों बड़ी फाइल।

https://cloud.githubusercontent.com/assets/1319791/7051226/c4570828-ddf4-11e4-87eb-8fc165e5ece4.gif


मूल जवाब (2012)

एक समाधान, बड़े बाइनरी फ़ाइलें के लिए इतना नहीं बदलते हैं, उन्हें एक अलग संदर्भ (एक Nexus repository की तरह) में स्टोर करने के लिए है , और संस्करण केवल एक टेक्स्ट फ़ाइल है जो आपको जिस संस्करण की आवश्यकता है घोषित करता है।
स्रोत रेपो (संस्करणों की तुलना करने और शाखाओं के बीच विलय करने के लिए बनाया गया है, जो बाइनरी के लिए अधिक उपयोग नहीं है) में बाइनरी तत्वों को संग्रहीत करने से "आर्टिफैक्ट रिपोजिटरी" का उपयोग करना आसान है।

अन्य समाधान है, और अधिक Git केंद्रित, git-annex है:

git-annex, Git के साथ प्रबंध फ़ाइलों की अनुमति देता है Git में फ़ाइल की सामग्री की जाँच के बिना।
हालांकि यह विरोधाभासी प्रतीत हो सकता है, यह तब उपयोगी होता है जब गिट की तुलना में बड़ी फ़ाइलों से निपटना वर्तमान में आसानी से संभाल सकता है, चाहे स्मृति, समय या डिस्क स्थान में सीमाएं हों।

हालांकि यह विंडोज के साथ संगत नहीं है।

एक और सामान्य समाधान git-media हो सकता है, जो आपको गिट में मीडिया को संग्रहीत किए बिना बड़ी मीडिया फ़ाइलों के साथ गिट का उपयोग करने की अनुमति देता है।

अंत में, सबसे आसान समाधान उन बाइनरी को अपने git submodule में अलग करना है जैसा कि आप अपने प्रश्न में उल्लेख करते हैं: यह बहुत संतोषजनक नहीं है, और प्रारंभिक क्लोन में अभी भी समय लगेगा, लेकिन माता-पिता रेपो के लिए अगले अपडेट छोटा हो

+0

इन सलाहों के लिए धन्यवाद। नेक्सस बहुत दिलचस्प लगता है और यह कई अन्य संदर्भों में उपयोगी हो सकता है। जब मैं कुछ समय लगेगा तो मैं इसे देख लूंगा :)। गिट-एनेक्स मेरी वर्तमान समस्या को हल करने का एक तेज तरीका हो सकता है। –

+0

गिट-एनेक्स विंडोज के साथ संगत नहीं है और मुझे मैकोज़ और विंडोज दोनों की आवश्यकता है :(। मैं जवाब को अनचेक कर दूंगा जब तक कि मेरे पास कोई अन्य समाधान न हो या नहीं, यह देखने के लिए नेक्सस को आजमाएं। धन्यवाद। –

+0

@ केविनमोलार्ड कोई समस्या नहीं। विकल्प जोड़े गए हैं (मेरे संपादित उत्तर देखें) – VonC

0

इन चरणों का पालन करें।

1.install git lfs आपकी स्थानीय मशीन में निम्न कोड टाइप करके टाइप करें।

git lfs install 

2. अब फ़ाइल प्रकार जोड़ें जिसे आप अपने लिए प्रबंधित करने के लिए lfs चाहते हैं।

git lfs track "*.mp4" 
  1. अब आप पूरी तरह से तैयार कर रहे हैं। आगे बढ़ें और अपनी फाइलें जोड़ें, प्रतिबद्ध करें और दबाएं और कोई चेतावनी नहीं होगी।
संबंधित मुद्दे