स्रोत नियंत्रण में बायनेरिज़


30

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

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


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

जवाबों:


28

संस्करण नियंत्रण (मिथ्या नाम: स्रोत नियंत्रण) का विचार आपको इतिहास के माध्यम से वापस रोल करने, परिवर्तनों के प्रभाव को पुनर्प्राप्त करने, परिवर्तन देखने और क्यों बनाया गया है। यह आवश्यकताओं की एक श्रेणी है, जिनमें से कुछ को बाइनरी चीज़ों की आवश्यकता होती है, जिनमें से कुछ की आवश्यकता नहीं है।

उदाहरण: एम्बेडेड फर्मवेयर के काम के लिए, आपके पास आम तौर पर एक पूरा टूलचैन होगा: या तो एक मालिकाना संकलक जिसमें बहुत पैसा खर्च होता है, या जीसीसी के कुछ संस्करण। शिपिंग निष्पादन योग्य प्राप्त करने के लिए आपको टूलचिन के साथ-साथ स्रोत की आवश्यकता होती है।

टूलचिन्स को संस्करण नियंत्रण में जांचना एक दर्द है, उपयोगिताओं का उपयोग भयानक है (यदि बिल्कुल भी), लेकिन कोई विकल्प नहीं है। यदि आप चाहते हैं कि टूलचैन उस आदमी के लिए संरक्षित किया जाए जो 5 साल के समय में आपके कोड को देखने के लिए आता है कि वह क्या करता है, तो आपके पास कोई विकल्प नहीं है: आपके पास टूलचिन भी संस्करण नियंत्रण में है।

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

सबसे चरम मामला मैंने विंडोज एक्सपी एंबेडेड किया है जहां "टूलचैन" एक रनिंग विंडोज एक्सपी वीएम है, जिसमें एसक्यूएल सर्वर और कॉन्फ़िगरेशन फाइल के ढेर के साथ-साथ सैकड़ों और पैच फाइलें शामिल हैं। पूरे लॉट को स्थापित करना और इसे अद्यतित करना लगभग 2-3 दिन लगते थे। संरक्षित करने के बाद, पोस्टर नियंत्रण के लिए ENTIRE VM की जाँच करना था। यह देखते हुए कि वर्चुअल डिस्क लगभग 6 x 2GB छवियों से बना है, यह वास्तव में काफी अच्छी तरह से चला गया। शीर्ष पर लगता है, लेकिन इसने मेरे लिए आने वाले व्यक्ति के लिए जीवन को बहुत आसान बना दिया और इसका उपयोग करना पड़ा - 5 साल बाद।

सारांश: संस्करण नियंत्रण एक उपकरण है। इसे प्रभावी होने के लिए उपयोग करें, शब्दों के अर्थ जैसी चीजों के बारे में मत लटकाओ, और इसे "स्रोत नियंत्रण" मत कहो क्योंकि यह उससे बड़ा है।


1
और जब वीएम को आपके रेपो गुब्बारे को 12 जीबी में अपडेट करने की आवश्यकता है? यहां तक ​​कि अगर आपके पास अच्छा बाइनरी है, तब भी आपकी बात 10GB + रेपो
TheLQ

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

जब आपका एम्बेडेड टूल चेन नेटवर्क लाइसेंस पर निर्भर करता है तो क्या होता है :)
Dan

18

नील फोर्ड द प्रोडक्टिव प्रोग्रामर में तर्क देते हैं कि आपको बायनेरिज़ को स्रोत नियंत्रण में रखना चाहिए :

बायनेरिज़ क्यों रखें? परियोजनाएं आज बाहरी उपकरणों और पुस्तकालयों की एक कड़ी पर निर्भर करती हैं। मान लीजिए कि आप किसी लोकप्रिय लॉगिंग फ्रेमवर्क (जैसे Log4J या Log4Net) का उपयोग कर रहे हैं। यदि आप अपनी निर्माण प्रक्रिया के हिस्से के रूप में उस लॉगिंग लाइब्रेरी के लिए बायनेरिज़ का निर्माण नहीं करते हैं, तो आपको इसे संस्करण नियंत्रण में रखना चाहिए। इससे आपको अपने सॉफ़्टवेयर का निर्माण जारी रखने की अनुमति मिलती है, भले ही प्रश्न में फ्रेमवर्क या लाइब्रेरी गायब हो जाए (या, अधिक संभावना है, एक नए संस्करण में ब्रेकिंग परिवर्तन का परिचय देता है)। संस्करण नियंत्रण में अपने सॉफ़्टवेयर का निर्माण करने के लिए हमेशा पूरे ब्रह्मांड को रखना आवश्यक है(ऑपरेटिंग सिस्टम को घटाता है, और यहां तक ​​कि वर्चुअलाइजेशन के साथ भी संभव है; इस वर्जन में बाद में "वर्चुअलाइजेशन का उपयोग करें" देखें। आप दोनों को संस्करण नियंत्रण में और एक साझा नेटवर्क ड्राइव पर रखकर बायनेरी को बनाए रखने का अनुकूलन कर सकते हैं। इस तरह, आपको प्रति घंटे के आधार पर उनसे निपटने की ज़रूरत नहीं है, लेकिन अगर आपको एक साल बाद कुछ पुनर्निर्माण करने की आवश्यकता होती है, तो वे बच जाते हैं। आप कभी नहीं जानते कि आपको कुछ पुनर्निर्माण करने की आवश्यकता होगी। आप इसे तब तक बनाएंगे जब तक यह काम न करे, फिर इसके बारे में भूल जाएं। यह महसूस करने के लिए घबराहट है कि आपको दो साल पहले से कुछ पुनर्निर्माण करने की आवश्यकता है और सभी हिस्से नहीं हैं।

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

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

काश मैं कुछ साल पहले इस किताब को पढ़ता, जब मैं एक ग्राफिक्स लाइब्रेरी (जो dll फ़ाइल थी) का उपयोग करके एक गेम पर काम कर रहा था; मैंने थोड़ी देर के लिए विकास को बाधित किया, और जब मैं जारी रखना चाहता था तो मैं फिर से dll नहीं पा सका क्योंकि परियोजना मर गई।


2
हां, यह सब बहुत बार होता है। मेरे पास एक शौक परियोजना है जहां मैं एक स्कैनर जनरेटर पर भरोसा करता हूं जिसे 3-4 साल पहले इसके लेखक द्वारा छोड़ दिया गया था। सौभाग्य से यह हमेशा संस्करण नियंत्रण में रहा है।
क्रिश्चियन क्लॉसर

9

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

इसके अलावा, व्यवहार में, मैं कई प्रकार के अप्रिय दुष्प्रभावों को बनाने के लिए बायनेरिज़ में जाँच करता हूं। Git / Mercurial वास्तव में इसके लिए तैयार नहीं है, उदाहरण के लिए, और Subversion और Perforce आपको नट ड्राइव कर सकते हैं जब आप उन शाखाओं को विलय कर सकते हैं जिनमें बायनेरिज़ होते हैं।

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

आपकी निजी रिपॉजिटरी को तब पारंपरिक फाइलसिस्टम बैकअप टूल के साथ बैकअप दिया जा सकता है।

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


8

स्रोत नियंत्रण स्रोतों के लिए है। स्रोत वही हैं जो आप अन्य चीजों से नहीं बना पा रहे हैं। कुछ फाइलें जो स्रोतों के रूप में योग्य होती हैं, वे बायनेरिज़ होती हैं।

मेरे वीसीएस में बहुत सारे बायनेरिज़ हैं, लेकिन हर एक को कुछ उत्पाद से रिलीज़ करने की इकाई है जिसे मैंने नहीं लिखा और बनाए नहीं रखता। यह GNU ccRTP जैसा कुछ हो सकता है, जिसे एक संकुचित टारबॉल के रूप में जारी किया जाता है। यह टारबॉल मेरा स्रोत है, और इसे एकल, स्वचालित चरण में तैयार उत्पाद (एक मेकफिल और मेरे मामले में एक RPM युक्ति) में बदलने के लिए जो भी बुनियादी ढांचे की आवश्यकता होती है, उसके साथ-साथ इसकी जाँच की जाती है। जब ccRTP का एक नया संस्करण होता है, तो मैं नए टारबॉल को बदले हुए स्रोत के रूप में मानता हूं: यह एक चेक-आउट कॉपी में जाता है, निर्मित होता है, परीक्षण किया जाता है और वीसीएस में वापस होता है। मैंने वाणिज्यिक उत्पादों के साथ ऐसा ही किया है जो स्रोत (संकलक, पुस्तकालय आदि) के साथ जहाज नहीं करते हैं और यह उसी तरह काम करता है। अनपैक-कॉन्फिगर-कंपाइल-पैकेज के बजाय, यह सिर्फ अनपैक-पैकेज है। सॉफ्टवेयर है कि रात बनाता है doesn 'बनाता हैmake और तैयार उत्पाद प्राप्त करें।

अधिकांश वीसीएस में ऐसी विशेषताएं होती हैं जो स्टोर करने के लिए और अधिक कुशल से निपटने के लिए मानव-पठनीय स्रोत को आसान बनाती हैं, लेकिन यह कहना कि वे बायनेरिज़ के लिए अनुकूल नहीं हैं यदि बायनेरिज़ अनमोल आउट में वापस आते हैं तो यह वास्तव में सही नहीं है। एक वीसीएस कैसे बायनेरिज़ के साथ आंतरिक रूप से व्यवहार करता है, यह पूरी तरह से इस बात पर निर्भर करता है कि उसके लेखकों ने सोचा कि केवल मतभेदों को स्टोर करने का प्रयास करना ही प्रयास के लायक था। व्यक्तिगत रूप से, मुझे लगता है कि 600K पर एक ccRTP वितरण की पूरी प्रतियां संग्रहीत करना एक पॉप मेरे अन्य स्रोतों के साथ इसके एक संस्करण को टैग करने की क्षमता से अधिक है।


4

यह मुझे "रिपॉजिटरी में जार" समस्या की याद दिलाता है जो कुछ समय पहले जावा में थी। जावा ऐप्स बनाने वाले लोगों का उपयोग उनकी निर्भरता (बाइनरी जार फ़ाइलों) को रिपॉजिटरी में धकेलने के लिए किया गया था। हर कोई इससे खुश था, क्योंकि आपके पास "वन क्लिक" बिल्ड सिस्टम होगा और डिस्क स्थान सस्ता है, इसलिए कौन परवाह करता है। तब मावेन आया और आप सभी को बाइनरी क्रॉफ्ट से छुटकारा दिला सकते हैं और स्थानीय कैश-केवल रिपॉजिटरी के साथ अभी भी बुलेट-प्रो बिल्ड बनाए रखते हैं। अभी भी आपके पास "वन क्लिक" बिल्ड सिस्टम है, लेकिन स्रोत नियंत्रण में बाइनरी फ़ाइलों के आसपास फेरबदल करने की आवश्यकता नहीं है जो वहां कोई मतलब नहीं रखते हैं।

तो हाँ, आप स्रोत नियंत्रण से बाहर बाइनरी फाइलें प्राप्त कर सकते हैं, लेकिन इसके लिए आपको बिल्ड सिस्टम को ट्विस्ट करने की आवश्यकता होगी, उन्हें बिल्ड समय पर प्राप्त करने के लिए। समर्पित सॉफ्टवेयर (मावेन की तरह) के बिना यह सिर्फ उन्हें बाहर निकालने के लिए बहुत प्रयास हो सकता है।


1
मैं निर्माण प्रक्रिया को जटिल करने के बारे में चिंतित हूं, ज्यादातर क्योंकि टीम के बड़े हिस्से गणितज्ञ हैं और प्रक्रिया के विशाल प्रशंसक नहीं हैं।
डैनियल गोल्डबर्ग

3

आपका स्रोत नियंत्रण आपके द्वारा किए गए स्रोतों को रखता है। यदि किसी दिए गए बाइनरी बूँद को स्रोतों से फिर से बनाया जा सकता है तो यह एक स्रोत नहीं है और इसे स्रोत कोड भंडार में नहीं जाना चाहिए। स्रोत नियंत्रण में केवल गैर-मनोरंजन योग्य बूँदें होनी चाहिए।

आपके पास आमतौर पर बाइनरी ब्लॉब्स का एक और रिपॉजिटरी नेटवर्क फ़ोल्डर होता है जिसे आपने स्रोतों के समय बनाया है। इन्हें ग्राहकों को तैनात किया जा सकता है या परियोजनाओं में उपयोग किया जा सकता है (हर बार खरोंच से सब कुछ बनाने के बजाय)।

इसलिए, अगर यह एक स्रोत है, तो इसे रखें। अगर नहीं।


कौन इसको कम करेगा ?? दिलचस्प क्यों: D

यह मैं नहीं था, लेकिन मुझे संदेह है कि जो कोई भी उत्तर के 2 छमाही से असहमत था।
जोएल कोएहॉर्न

@JoelCoehoorn, दिलचस्प, जैसा कि वास्तव में एक मावेन भंडार है।

2

लक्ष्य को नवीनतम कोड प्राप्त करने और कुछ भी स्थापित / सेटअप किए बिना इसे बनाने में सक्षम होना है (इसलिए, एक "सिंगल क्लिक" बिल्ड)।

कई स्थानों पर, मेरा मतलब है कि निर्भरता के द्वैत में जाँच करना। दूसरों में, इसका मतलब है कि बिल्ड स्क्रिप्ट डाउनलोड होती हैं और स्वचालित रूप से निर्भरताएं प्राप्त करती हैं।

इस ब्लॉग पोस्ट को डेरेक ग्रीर द्वारा इस विषय पर देखें ।


2

मैं दो अलग-अलग बिल्ड चरणों के साथ एक प्रोजेक्ट पर काम कर रहा हूं

  • "मुख्य प्रोग्राम बिल्ड" को केवल कुछ बायनेरिज़ की आवश्यकता होती है, हजारों सोर्स कोड टेक्स्ट फ़ाइलों की तुलना में, इसलिए बायनेरिज़ को रिपॉजिटरी में चेक किया जाता है। यह ठीक काम करता है।

  • इंस्टॉलर बिल्ड को तीसरे पक्ष के घटकों की बहुत आवश्यकता होती है (उनमें से कुछ को एडोब रीडर की तरह इंस्टॉलेशन सीडी में कॉपी किया जाता है)। हम उन्हें रिपॉजिटरी में नहीं डाल रहे हैं। इसके बजाय, वे घटक एक नेटवर्क ड्राइव (यहां तक ​​कि पुराने संस्करण) पर रहते हैं, और बिल्ड स्क्रिप्ट उन्हें सही जगह पर कॉपी करते हैं। बेशक, प्रतिलिपि प्रस्तुत करने योग्य बिल्ड करने के लिए, किसी को भी किसी भी फ़ोल्डर को बदलने के लिए नहीं सावधान रहना होगा जहां तीसरे पक्ष के घटक संग्रहीत हैं।

दोनों रणनीतियों ठीक काम करती हैं और "स्रोत नियंत्रण से बाहर की जाँच करना" में वह सब कुछ शामिल है जो आपको कोड को संकलित करने की आवश्यकता है।


1

आपको भविष्य में कुछ बिंदु पर उत्पाद के विशिष्ट संस्करणों के पुनर्निर्माण के लिए आपको सब कुछ रखने की आवश्यकता होगी।

हालाँकि आपको सोर्स कंट्रोल में सब कुछ नहीं रखना है।

एक कंपनी ने एक जमे हुए सर्वर रैक को रखा (क्योंकि ओएस केवल उस विशिष्ट हार्डवेयर पर चलता था, और टूलचेन केवल उस ओएस पर चलता था, और स्रोत उस टूलचैन पर निर्भर था)। स्रोत नियंत्रण में यह जाँच नहीं कर सकते।

यदि आपको किसी बिल्ड के लिए आवश्यकताओं को विभाजित करने की आवश्यकता है, तो आपको दो संस्करण नियंत्रण प्रणालियों को सिंक करने की लेखांकन समस्या है। इस कोठरी में हार्डवेयर बॉक्स, या इस संरक्षित बैकअप मात्रा में वीएम या बायनेरिज़ जैसे, इस एसवीएन सोर्स कोड संशोधन के साथ जाएं, आदि। यह एक एकल स्रोत नियंत्रण प्रणाली का उपयोग करके गड़बड़ है, लेकिन सॉल्वेबल है।


0

यह मेरे दिमाग में SCM को बाइनरी चेक-इन करने के लिए बहुत अराजकता है। मैंने एक बहुत ही जटिल परियोजना चलाई थी, जिसमें तीसरे भाग के पुस्तकालयों पर बहुत अधिक निर्भरता थी। हमने जो सिद्धांत अपनाए:

  1. सभी स्रोत कोड SCM के साथ प्रबंधित हैं
  2. सभी आश्रितों को इवी के साथ प्रबंधित किया जाता है, जिसमें महान ग्रहण एकीकरण है।

यह बहुत अच्छी तरह से काम करता है। हमारे पास प्रत्येक बाहरी पुस्तकालय के संस्करण के बारे में एक कॉन्फ़िगरेशन फ़ाइल है जिसे स्रोत कोड के साथ संकलित किया जा सकता है। यह कॉन्फ़िगरेशन फ़ाइल SCM में जाँच की जाती है, इसलिए यह स्रोत कोड विकसित होते ही विकसित हो जाती है। इस दृष्टिकोण को लागू करके, हम बाहरी पुस्तकालयों के संस्करण को गड़बड़ाने के बिना एक निर्माण को पुन: उत्पन्न कर सकते हैं।


0

व्यक्तिगत रूप से, दार्शनिक रूप से, मैं बड़े बाइनरी फ़ाइलों (छोटे बाइनरी संसाधन ठीक हैं) के लिए संकेत में स्रोत नियंत्रण की जांच करने के लिए इच्छुक हूं , न कि फ़ाइल की सामग्री। इस सूचक में बाइनरी फ़ाइल सामग्री का हैश होगा।

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

Git LFS और git एनेक्स ऐसा करते हैं, लेकिन वे कुछ हद तक बाइनरी फ़ाइलों को प्रबंधित करने का भी प्रयास करते हैं, मैं नहीं चाहता कि वे ऐसा करें। मैं चाहता हूं कि गिट केवल चेकसमों को स्टोर करें, और मुझे बताएं कि क्या मेरी बाइनरी फाइलें बदल गई हैं या नहीं - लेकिन मैं नहीं चाहता कि यह उन्हें प्रबंधित करने और उन्हें स्टोर करने की कोशिश करे। मैं खुद ऐसा करना चाहता हूं।

मुझे लगता है कि git छोटी और मध्यम आकार की बाइनरी फ़ाइलों को संभाल सकता है लेकिन मुझे यकीन नहीं है कि यह बड़ी बाइनरी फ़ाइलों के प्रबंधन के लिए सही उपकरण है।

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