बड़ी बाइनरी फ़ाइलों वाले एक git रेपो का अनुकूलन करें


21

हमारी परियोजना लगभग 11GB की है, जिनमें से 10 बाइनरी डेटा (.png चित्र) हैं। नतीजतन, एक git diffया git statusसंचालन में एक मिनट से अधिक समय लगता है। सौभाग्य से सभी डेटा फ़ाइलों को अद्भुत नाम के साथ एक फ़ोल्डर में अलग किया जाता है data। असाइनमेंट "द्विआधारी फ़ाइलों पर संपीड़ित, भिन्न और अन्य महंगा संचालन से बचें।"

मुझे लगता है कि गिट विशेषताओं का समाधान है, लेकिन कैसे? या एक अखंड रेपो से बेहतर वास्तुकला है?


1
यहां पहला बड़ा सवाल यह है कि वे डेटा फाइलें कितनी महत्वपूर्ण हैं। क्या आपके कार्यक्रम को कुछ भी उपयोगी बनाने के लिए उन सभी छवियों की आवश्यकता है, या यह विशिष्ट विकास / परीक्षण के दौरान एक छोटे से उप-समूह के साथ दूर हो सकता है?
17 मई को Ixrec

@Ixrec, चित्र वास्तव में स्रोत कोड की तुलना में अधिक महत्वपूर्ण हैं। उनमें से सभी मौजूद होना चाहिए, और .png चेकसम हमेशा भ्रष्ट फ़ाइलों के लिए जाँच की जाती है।
वोर्क

1
स्टैक ओवरफ्लो पर यह सवाल क्यों नहीं है? प्र। बिल्कुल इसके अनुकूल लगता है।
016

@spirc इस प्रश्न को "एक सॉफ्टवेयर टूल की सहायता से" के बीच की रेखा को बताया जाता है, जो SO पर ऑन-टॉपिक है, और "वर्जन कंट्रोल स्ट्रेटेजी" जो यहां ऑन-टॉपिक है। चूंकि यह कुछ करने के लिए किस कमांड को निष्पादित करने के लिए नहीं कह रहा है, यह स्पष्ट रूप से लाइन के एसओ तरफ नहीं है इसलिए मैंने इसे यहां खुला छोड़ने के लिए मतदान किया।

@ सॉनमैन प्रतिक्रिया के लिए धन्यवाद। ऑन-टॉपिक सूची का कौन सा आइटम फिट बैठता है? programmers.stackexchange.com/help/on-topic
spirc

जवाबों:


18

आप git-lfs या समान टूल (git-fat, git- annex , आदि) का उपयोग कर सकते हैं । वे उपकरण मूल रूप से आपके रेपो में बाइनरी फ़ाइलों को छोटे पाठ फ़ाइल के साथ हैश के साथ प्रतिस्थापित करते हैं, और वास्तविक बाइनरी डेटा को गैर-गिट तरीके से स्टोर करते हैं - जैसे नेटवर्क शेयर।

बनाता है और सब कुछ सुपरफास्ट के रूप में केवल hashes की तुलना में मिलता है, और है - कम से कम git-lfs के लिए - उपयोगकर्ता के लिए पारदर्शी (एक बार स्थापित करने के बाद)।

Afaik git-lfs को github, gitlab, VisualStudio द्वारा समर्थित किया गया है, और यह खुला स्रोत है।


2
क्या आपने git-lfsएक मिश्रित डेवलपर / कलाकार टीम के साथ कई गीगाबाइट संपत्ति वाले प्रोजेक्ट पर उपयोग करने की कोशिश की है ? मुझे यह जानने में दिलचस्पी है कि क्या लोग गेम और एनीमेशन जैसी परियोजनाओं के लिए git-lfs का उपयोग कर रहे हैं। चूंकि लेखन के समय यह अभी भी काफी नया है। मेरे स्वयं के अनुभव से कम तकनीकी उपयोगकर्ताओं के लिए git में प्रवेश की बाधा पहले से ही बहुत अधिक है, इसलिए फ़ाइल प्रबंधन के लिए इसके ऊपर एक अतिरिक्त परत होना - लोगों के लिए उपयोग करना मुश्किल हो सकता है जब तक कि वे पहले से ही git के साथ सहज न हों।
सुविचार ४२

केवल लगभग ~ 1GB डेटा तक के लिए क्षमा करें। लेकिन git-lfs को एंड्यूसर के लिए कोई अतिरिक्त कदम नहीं जोड़ना चाहिए, यह पूरी तरह से पारदर्शी होना चाहिए।
kat0r

यह सही उत्तर लगता है, अगर एकीकरण के दौरान कुछ समस्याएं उत्पन्न होती हैं तो मैं यहां वापस रिपोर्ट करूंगा। तो इंस्टॉलेशन प्रक्रिया को केवल एक बार सर्वर पर पूरा करने की आवश्यकता है, न कि प्रत्येक क्लाइंट मशीन पर?
वोरैक

Afaik आपको एक छोटा ग्राहक एडिन स्थापित करने की आवश्यकता है, भी, जीथब पृष्ठ की जांच करें। लेकिन यह किसी भी विकल्प की तुलना में समूह नीति / सरल के साथ रोल आउट करना आसान होना चाहिए।
kat0r

1

GIT और SVN रेपो दोनों का उपयोग करें

यदि बाइनरी फ़ाइलों को स्रोत से तार्किक रूप से अलग किया जा सकता है, तो आप पाठ फ़ाइलों के लिए गिट का उपयोग करने पर विचार कर सकते हैं, और एक गैर डीवीसीएस जैसे बाइनरी फ़ाइलों के लिए तोड़फोड़ कर सकते हैं।

एक परियोजना जिस पर मैं काम करता हूं, क्योंकि हमारे पास प्रति-संकलित पुस्तकालयों (OSX / Win32 निर्भरताओं के लिए) के लिए कई जीबी हैं, जिन्हें हमें संस्करणबद्ध रखने की आवश्यकता है।


दूसरी ओर यदि आपके पास गैर-तकनीकी उपयोगकर्ता हैं, तो दो संस्करण नियंत्रण प्रणालियों का उपयोग समस्याग्रस्त हो सकता है। हालाँकि अगर कलाकार कोड पर काम नहीं कर रहे हैं तो आप अपडेट करने के लिए एक स्क्रिप्ट प्रदान कर सकते हैं, और वे द्विआधारी संपत्ति बनाने के लिए तोड़फोड़ का उपयोग कर सकते हैं।

SVN का उपयोग करें (साथ git svn)

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

यह git का उपयोग करने वाले डेवलपर्स के लिए इसे थोड़ा और काम करता है, लेकिन इसका मतलब है कि जो DVCS (या सामान्य रूप से VCS) से परिचित नहीं हैं - वे कई जटिल संस्करण नियंत्रण प्रणालियों का उपयोग किए बिना SVN के सरल मॉडल का उपयोग कर सकते हैं ।


git-lfs एक विकल्प भी है, लेकिन मैंने इसका उपयोग नहीं किया इसलिए यह नहीं बोल सकता कि यह कितना अच्छा काम करता है।

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