"हाय, अमिगो!"

"हाय!"

"आज मी तुम्हाला आवृत्ती नियंत्रण प्रणालींबद्दल सांगेन."

"तुम्हाला कदाचित आधीच माहित असेल की, प्रोग्राम अनेकदा खूप मोठे असतात आणि लिहिण्यासाठी खूप वेळ लागतो. कधीकधी डझनभर लोक प्रोग्राम लिहिण्यासाठी वर्षे घालवू शकतात."

"कोडाच्या लाखो ओळी असलेले प्रकल्प हे वास्तव आहे."

"व्वा."

"हे सर्व खूप क्लिष्ट आहे. लोक सहसा एकमेकांमध्ये हस्तक्षेप करतात, आणि बर्‍याचदा समान कोड बदलतात, आणि असेच पुढे."

"या गोंधळात सुव्यवस्था आणण्यासाठी, प्रोग्रामर त्यांच्या कोडसाठी आवृत्ती नियंत्रण प्रणाली वापरण्यास सुरुवात केली."

" आवृत्ती नियंत्रण प्रणाली हा एक प्रोग्राम आहे ज्यामध्ये क्लायंट आणि सर्व्हर असतो.

"प्रोग्राम सर्व्हरवर डेटा (प्रोग्रामरने लिहिलेला कोड) संग्रहित करतो आणि प्रोग्रामर क्लायंट वापरून त्यात जोडतात किंवा बदलतात."

"व्हर्जन कंट्रोल सिस्टीम आणि प्रोग्राम्स मधील मुख्य फरक जे फक्त दस्तऐवजांवर सहकार्याने कार्य करणे शक्य करतात ते म्हणजे ते सर्व दस्तऐवजांच्या (कोड फाइल्स) मागील सर्व आवृत्त्या संग्रहित करते."

"तुम्ही मला अधिक तपशील देऊ शकता. हे सर्व कसे चालते?"

"कल्पना करा की तुम्ही प्रोग्रामर आहात आणि तुम्हाला सर्व्हरवरील रेपॉजिटरीमध्ये साठवलेल्या प्रोग्रामच्या स्त्रोत कोडमध्ये लहान बदल करायचे आहेत."

"तुम्हाला काय करावे लागेल ते येथे आहे:"

"1) सर्व्हरवर लॉग इन करा."

"2) चेकआउट कमांड वापरून सर्व फायलींची नवीनतम आवृत्ती आपल्या संगणकावर कॉपी करा."

"3) आवश्यक फाइल्समध्ये बदल करा."

"4) प्रोग्राम संकलित आणि चालतो याची खात्री करण्यासाठी स्थानिक पातळीवर चालवा."

"5) Commit कमांड वापरून तुमचे 'बदल' सर्व्हरवर पाठवा."

"त्याला सामान्यतः अर्थ प्राप्त होतो."

"पण अजून बरेच काही आहे. कल्पना करा की तुम्ही सकाळी कामावर पोहोचता, पण भारतात जेवणाची वेळ आधीच आली आहे. त्यामुळे तुमच्या भारतीय सहकाऱ्यांनी आधीच बदल केले आहेत आणि सर्व्हरवरील तुमच्या भांडारात त्यांचे बदल केले आहेत."

"तुम्हाला कोडच्या नवीनतम आवृत्तीसह कार्य करणे आवश्यक आहे. म्हणून तुम्ही अद्यतन आदेश पूर्ण करा."

"ते चेकआउटपेक्षा वेगळे कसे आहे ?"

" चेकआउट हे रेपॉजिटरीच्या सर्व फायली कॉपी करण्यासाठी डिझाइन केलेले आहे, परंतु अपडेट फक्त त्या फाइल्स अद्यतनित करते ज्या सर्व्हरवर अद्यतनित केल्या गेल्या आहेत तेव्हापासून तुम्ही चेकआउट / अपडेट कमांड चालवला होता."

"हे अंदाजे कसे कार्य करते:"

चेकआउट :

आवृत्ती नियंत्रण प्रणाली - १

"आता, समजा आम्ही फाइल बी बदलली आहे आणि ती सर्व्हरवर अपलोड करायची आहे. हे करण्यासाठी, आम्हाला कमिट कमांड वापरण्याची आवश्यकता आहे."

आवृत्ती नियंत्रण प्रणाली - 2

"आणि अपडेट कमांड कसे कार्य करते ते येथे आहे:"

आवृत्ती नियंत्रण प्रणाली - 3

"किती इंटरेस्टिंग! अजून काही कमांड आहेत का?"

"होय, बरेच काही आहेत. परंतु तुम्ही कोणता आवृत्ती नियंत्रण प्रोग्राम निवडता त्यानुसार ते बदलतात. म्हणून, मी फक्त सामान्य तत्त्वे स्पष्ट करण्याचा प्रयत्न करत आहे."

"विलीनीकरण नावाचे एक ऑपरेशन देखील आहे - दोन दस्तऐवजांचे एकत्रीकरण. समजा दोन प्रोग्रामर एकाच वेळी एकाच फाईलमध्ये बदल करतात. मग सर्व्हरवरील प्रोग्राम दोन्ही बदल करण्यास अनुमती देणार नाही. जो कोणी प्रथम कमिट करतो त्याला जोडणे आवश्यक आहे. किंवा तिचे बदल."

"मग दुसरी व्यक्ती काय करते?"

"त्याला किंवा तिला सर्व्हरवरून नवीनतम बदल मिळवण्यासाठी अपडेट ऑपरेशन करण्यासाठी आमंत्रित केले जाईल . तसे, हे - कमिट करण्यापूर्वी अपडेट करणे - चांगला सराव आहे."

"मग, अपडेट ऑपरेशन दरम्यान, क्लायंट प्रोग्राम सर्व्हरकडून प्राप्त झालेल्या बदलांसह स्थानिक बदल विलीन करण्याचा प्रयत्न करेल."

"जर प्रोग्रामरने फाइलचे वेगवेगळे भाग बदलले असतील, तर व्हर्जन कंट्रोल प्रोग्राम कदाचित त्यांना यशस्वीरित्या विलीन करू शकेल.  जर बदल त्याच ठिकाणी असतील, तर व्हर्जन कंट्रोल प्रोग्राम मर्ज विरोधाची तक्रार करेल आणि वापरकर्त्याला मॅन्युअली प्रॉम्प्ट करेल. बदल विलीन करा."

"उदाहरणार्थ, जेव्हा दोन्ही प्रोग्रामर फाईलच्या शेवटी काहीतरी जोडतात तेव्हा असे घडते."

"मी पाहतो. एकंदरीत, ते वाजवी वाटते."

"आणि आणखी एक गोष्ट आहे: शाखा."

"कल्पना करा की एका टीममधील दोन प्रोग्रामरना समान मॉड्यूल पुन्हा लिहिण्याचे काम दिले आहे. किंवा त्याहूनही चांगले - ते सुरवातीपासून पुन्हा लिहिणे. जोपर्यंत हे मॉड्यूल पूर्ण होत नाही तोपर्यंत, प्रोग्राम चालवता येणार नाही आणि कदाचित संकलित देखील होणार नाही."

"मग त्यांनी काय करायचं आहे?"

"ते रेपॉजिटरीमध्ये शाखा जोडून पुढे जातात. ढोबळपणे सांगायचे तर, याचा अर्थ रेपॉजिटरी दोन भागांमध्ये विभागली जाते. फाइल्स किंवा डिरेक्टरीद्वारे नव्हे तर आवृत्त्यांनुसार."

"कल्पना करा की विजेचा शोध कधीच लागला नाही आणि रोबोटचाही शोध लागला नाही. मग तीन मुक्तियुद्धे कधीच झाली नसती आणि संपूर्ण मानवी इतिहासाने पूर्णपणे वेगळ्या मार्गाचा अवलंब केला असता. "

"हा मार्ग इतिहासाची पर्यायी शाखा आहे."

"किंवा तुम्ही फक्त रिपॉझिटरीची एक प्रत म्हणून शाखा चित्रित करण्याचा प्रयत्न करू शकता. दुसऱ्या शब्दांत, कधीतरी, आम्ही सर्व्हरवर रेपॉजिटरीचा क्लोन बनवला, जेणेकरून मुख्य भांडाराच्या व्यतिरिक्त (ज्याला ट्रंक म्हणतात . ) आमची दुसरी शाखा आहे ."

"बरं, ते अधिक समजण्यासारखे आहे.

"आम्ही रेपॉजिटरी कॉपी केली असे तुम्ही का म्हणू शकत नाही?"

"ही सोपी कॉपी नाही."

"या फांद्या फक्त खोडापासून वेगळ्या केल्या जाऊ शकत नाहीत, तर त्यामध्ये विलीन देखील होऊ शकतात."

"दुसर्‍या शब्दात, शाखेत काही काम केले जाऊ शकते, आणि नंतर ते पूर्ण झाल्यावर तुम्ही रिपॉझिटरी शाखा रिपॉझिटरी ट्रंकमध्ये जोडू शकता?"

"हो."

"आणि फाईल्सचे काय होणार?"

"फाईल्स विलीन केल्या जातील."

"बरं, ते छान वाटतंय. मला आशा आहे की ते कृतीतही छान असेल."

"आणि मग काही. ठीक आहे, चला ब्रेक घेऊया."

" येथे उपयुक्त माहितीचा एक समूह आहे  "