संस्करण नियंत्रण का उपयोग कैसे करें


19

मैं लोकलहोस्ट में php में एक वेब साइट विकसित कर रहा हूं और जैसे-जैसे इसके मॉड्यूल पूरे होते जाते हैं, मैं इसे क्लाउड पर अपलोड करता हूं ताकि मेरे दोस्त इसे अल्फा बना सकें।

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

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


5
किस संस्करण पर नियंत्रण प्रणाली का उपयोग करने के लिए बहुत सारे सुझाव हैं, और ईमानदारी से, ये सभी आपके वर्तमान "मैनुअल" तरीके से बेहतर हैं।
जोहान

जवाबों:


28

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

शुरू करने के लिए, उस क्रम में एक Mercurial, GIT या बाज़ार चुनें, और इसे अपने IDE और ऑपरेटिंग सिस्टम के लिए टूल के साथ स्थापित करें (मैं ग्रहण के लिए HGE के साथ Mercurial पसंद करता हूं)।

  1. अपनी वर्किंग डायरेक्टरी से एक रिपॉजिटरी शुरू करें ( Mercurial के साथ init )
  2. तय करें कि आप किन फ़ाइलों और निर्देशिकाओं को ट्रैक करना चाहते हैं और कौन सी नहीं। सामान्य नियम उन फ़ाइलों को ट्रैक करने के लिए नहीं है जो संकलक और अन्य उपकरणों द्वारा उत्पन्न होते हैं।
  3. रिपॉजिटरी में फ़ाइलें और निर्देशिकाओं को जोड़ने के लिए कमांड का उपयोग करें ( Mercurial के लिए hg add )।
  4. जिन फ़ाइलों को आप ट्रैक नहीं करना चाहते हैं, उनके पैटर्न के बारे में टूल को बताएं (संपादित करें । Mercurial के लिए .gignore )।
  5. मूल संस्करणों ( hg ci ) को ट्रैक करने के लिए एक प्रतिबद्ध प्रदर्शन करें ।
  6. प्रत्येक तार्किक मील के पत्थर के बाद एक प्रतिबद्ध प्रदर्शन करें, भले ही वह एक छोटा हो।
  7. जैसे ही आप उन्हें बनाते हैं नई फाइलें जोड़ें।
  8. पिछले दो को दोहराएं।
  9. बैकअप अपनी कार्यशील निर्देशिका और रिपॉजिटरी के रूप में अक्सर उचित।

रिपॉजिटरी में आपकी फ़ाइलों के साथ, आप किसी फ़ाइल या डायरेक्टरी के किसी भी दो संस्करणों या पूर्ण प्रोजेक्ट ( hg diff ) के बीच के अंतरों को जान सकते हैं , परिवर्तनों का इतिहास ( hg hist ) देखें, और परिवर्तनों को वापस करें ( hg up -r) )।

अपने कोड को प्रकाशित करने से पहले रिपॉजिटरी को टैग ( hg टैग ) करना एक अच्छा विचार है, इसलिए आप जो संशोधन या तुलना के लिए प्रकाशित हुए हैं, उसे वापस करने का एक आसान तरीका है।

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

यदि प्रयोग एक नए, उन्नत संस्करण के लिए है तो क्लोन और फिर शाखा ( hg शाखा ) ताकि आप एक प्रयोग को बिना किसी दूसरे के साथ हस्तक्षेप किए अद्यतन किए गए रिपॉजिटरी की सभी प्रतियां रख सकें।

लिनस टॉर्वाल्ड्स (जो अपनी परियोजनाओं में दसियों-हज़ारों फाइलों और कोड की लाखों पंक्तियों से संबंधित हैं) ने Google पर एक बात कही कि टूल CVS, SVN, या कई मुफ्त और व्यावसायिक लोगों में से कोई भी क्यों नहीं हो सकता है ; यह देखने लायक है।


1
मैं मर्क्यूरियल को भी पसंद करता हूं। मुझे नेटबीन्स में समर्थन पसंद है क्योंकि जब आप कोडिंग कर रहे होते हैं तो यह आपको हर उस लाइन को दिखाता है जो आपके पिछले कमिटमेंट के बाद बदल गई है। यह उत्पाद के पेड़ में नई / परिवर्तित / अपरिवर्तित फ़ाइलों को भी रंग देता है। ऐसा लगता है कि यह ओपी के लिए उपयोगी होगा I lose track of which file I've edited or changed:। HGE यह भी कर सकता है, मैंने इसका उपयोग नहीं किया है।
जद इसाक्स

1
+1 प्रक्रिया का वर्णन करने के साथ-साथ इसे करने के लिए टूल का उपयोग करने का तरीका भी।
डोनल फैलो

एक साइड-प्रश्न के रूप में, क्या .xcodeprojiOS प्रोजेक्ट्स के लिए Xcode का उपयोग करने वाली फ़ाइल को मर्क्यूरियल को अनदेखा करने के लिए कुछ कहा जाना चाहिए, या फ़ाइल को सिंक में रखना महत्वपूर्ण है?
केविन याप

1
@ केविन मैं Xcode के बारे में नहीं जानता, लेकिन नवीनतम IDE और टूल में समग्र प्रोजेक्ट सामान (भाषा और लाइब्रेरी संस्करण, कोड फ़ॉर्मेटिंग नियम, निर्भरता, आदि) और उपयोगकर्ता प्राथमिकताएं (जहाँ मैं सामान रखता हूँ, पैनल) के लिए अलग-अलग कॉन्फ़िगरेशन फ़ाइलें हैं लेआउट, खाल, फ़ॉन्ट-आकार, व्यक्तिगत हस्ताक्षर)। यदि टीम सहमत हो तो पूर्व को रिपॉजिटरी में शामिल किया जा सकता है। उत्तरार्द्ध को शामिल नहीं किया जाना चाहिए, क्योंकि रिपॉजिटरी से एक अपडेट किसी और के साथ आपकी प्राथमिकताओं को अधिलेखित कर देगा, और यह जल्दी से कष्टप्रद और उल्टा हो जाता है।
अपाला

1
@ जॉन: नेटबीन्स हर वीसीएस का समर्थन करता है। इस बिंदु पर, यह IDEs की एक मूल विशेषता है।
माइक बैरनज़क

13

मैं अत्यधिक Git की सिफारिश करूंगा। इसके बारे में यहां जानें: https://lab.github.com/

यदि आपको Git पसंद नहीं है, तो अन्य संस्करण नियंत्रण समाधान हैं। आप एसवीएन की जांच कर सकते हैं।


1
Git के रोज़मर्रा के उपयोगकर्ता के रूप में, मैं यह जोड़ना चाहूंगा कि यह आवश्यक आदेशों को लेने के लिए बेहद आसान और सहज है। और इसके लिए समर्थन बहुत अच्छा है ताकि आप मदद के लिए देखने के दौरान खो न जाएं। मैंने SVN का उपयोग किया है, लेकिन यह मेरे लिए उतना आसान नहीं था, लेकिन यह बहुत सारे उपयोगकर्ताओं के लिए ठीक हो सकता है।
मुहम्मद उस्मान

1
+1 यह भी विचार करें: लोग svn (एक VCS) से जीआईटी (एक डीवीसीएस - डी = वितरित) का चयन करना चाहते हैं लेकिन जीआईटी से एसवीएन (पसंद के माध्यम से) नहीं।
माइकल डुरंट

7

यह सिर्फ तुम ?, एक DVCS का उपयोग करें

जैसा कि यह लगता है कि काउंटर-सहज ज्ञान युक्त, एक वितरित संस्करण नियंत्रण प्रणाली (मर्क्यूरियल, गिट, मार्केट) एक केंद्रीकृत प्रणाली (svn, cvs) की तुलना में शुरू करना बेहतर है। क्यों ?, आप इसे अपनी मशीन पर स्थापित करते हैं और स्थानीय रूप से अपनी रिपॉजिटरी चलाते हैं, और यही है। Svn जैसे एक केंद्रीकृत प्रणाली पर आपको क्लाइंट और एक सर्वर सेट करने की आवश्यकता होती है ... और फिर, आपको अपने परिवर्तनों को संग्रहीत करने के लिए एक सर्वर से कनेक्ट होने की आवश्यकता होती है।

DVCS के साथ आप, स्थानीय रिपॉजिटरी, और यदि आप चाहें, तो आप bitbucket.org या github.com जैसी सेवा का उपयोग कर सकते हैं।

IMHO, मर्क्यूरियल एक मित्रतापूर्ण और समान रूप से सक्षम DVCS है जिसके साथ शुरुआत करनी है।

वहाँ दूसरों रहे हैं?, एक DVCS का उपयोग करें!

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

यहाँ छवि विवरण दर्ज करें

आपका अंत कुछ इस तरह से होता है, जहाँ हर कोई बस तदर्थता करता है:

यहाँ छवि विवरण दर्ज करें

प्रत्येक व्यक्ति बस अपने स्वयं के काम के बारे में चिंता करता है, जबकि संस्करण (यानी कमिट करने के लिए रेसिंग नहीं) और केवल प्रतिबद्ध करने के लिए सर्वर से कनेक्शन के बारे में चिंता न करें।

सौभाग्य


1
+1 बहुत अच्छे उदाहरण! आधुनिक उपकरणों के साथ जटिल मर्ज के पेड़ों में अनुपस्थित दर्द पर जोर देने के लिए आपको संपादित करना चाहिए।
अपाला Ap

5

संक्षेप में, कई विकल्प हैं, जिनमें से सबवर्सन (एसवीएन) और गिट सबसे लोकप्रिय लगते हैं (इस प्रकार वेब पर समाधान खोजना सबसे आसान है)।

वे दोनों अलग-अलग हैं। SVN सरल है, लेकिन Git के साथ शुरू करने के लिए आपको सर्वर की आवश्यकता नहीं है - आप स्थानीय रूप से संस्करण को नियंत्रित कर सकते हैं।

मान लें कि आपके पास लिनक्स है और Git का उपयोग शुरू करना चाहते हैं:

  1. Git स्थापित करें
  2. निर्देशिका पर जाएं और 'git init' कमांड निष्पादित करें
  3. फ़ाइलों को जोड़ने, परिवर्तनों की समीक्षा करने, उन्हें करने का तरीका जानें ...
  4. ... और अधिक उन्नत चीजें करने के लिए (लॉग की समीक्षा करना, बदलावों की समीक्षा करना, फाइलों को अनदेखा करना, शाखाएं बनाना, उनका विलय करना, रिमोट बनाना, सबमोडुल्स का उपयोग करना, एसवीएन समर्थन का उपयोग करना आदि)।

आशा है कि यह आपको शुरू करने में मदद करता है।


1
एसवीएन को सर्वर की आवश्यकता नहीं होती है, लेकिन इसके लिए आवश्यक है कि रिपॉजिटरी एक निर्देशिका में काम करने वाले से अलग हो। एसवीएन और सीवीएस को आमतौर पर जीआईटी और मर्क्यूरियल जैसे ओटी टूल्स के पक्ष में चित्रित किया जाता है जिन्हें दैनिक कार्य के लिए नेटवर्क कनेक्शन की आवश्यकता नहीं होती है और उन्हें सहयोगी और वितरित सॉफ्टवेयर विकास के लिए केंद्रीय भंडार की आवश्यकता नहीं होती है।
अपाला

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

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

2
@ टैडेक मेरी समझ में मर्क्यूरियल और जीआईटी के काम करने का तरीका नहीं है। इनमें, एक एकल व्यक्ति के प्रभारी होते हैं जो एक रिपॉजिटरी में जाते हैं, यह कमिट, पुल या पैच के द्वारा होता है। वितरित रिपॉजिटरी में, यदि किसी के पास विशेषाधिकार हैं, तो आप पहले से ही अपने पूरे दिल से उन पर भरोसा करते हैं। लिनुस
टॉर्वाल्ड्स

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

2

जैसा कि अपाला ने सुझाव दिया है, मैं चेक आउट करने की सलाह देता हूं । चूंकि आप संस्करण नियंत्रण के लिए नए हैं, आप पहले पृष्ठ को छोड़ सकते हैं। आपको एक अच्छा परिचय देना चाहिए, बाद में आप एसओ पर पोस्ट कर सकते हैं यदि आपके पास विशिष्ट प्रश्न हैं।


0

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

कई रिपोजिटरी? मुझे यकीन है कि वहाँ उन लोगों के लिए कुछ वैध उपयोग कर रहे हैं, लेकिन मैं उन में कभी नहीं चला है।

नेटवर्क एक्सेस के बिना, स्थानीय कमिट करने में सक्षम होने के नाते? यह अच्छा है, अगर आप कई असतत परिवर्तन कर रहे हैं, और आप रिपॉजिटरी सर्वर तक नहीं पहुंच सकते हैं - लेकिन ईमानदारी से, यह कितनी बार होता है?

Git ब्रांचिंग और मर्जिंग से निपटने में आसान बनाता है। लेकिन एक व्यक्ति टीम के लिए, यह इतनी बड़ी बात नहीं है।

लिनक्स कर्नेल के पैमाने पर कुछ के लिए - हाँ, Git का उपयोग करें। हम में से बाकी लोगों के लिए, तोड़फोड़ काफी अच्छी है।


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

1
@ MarnenLaibow-Koser हाँ, उस समय मेरी राय थी, लेकिन कई वर्षों के लिए व्यावसायिक रूप से Git का उपयोग करने के बाद मुझे आपसे सहमत होना होगा।
माइक बैरनज़क

अति उत्कृष्ट! आपको आत्मसात कर लिया जाएगा। : डी
मर्नेन लाईबो-कोसर

-1

मुझे लगता है कि एक वितरित संस्करण नियंत्रण प्रणाली अच्छा करेगी। आमतौर पर सुझाए गए विकल्प Git और Mercurial (Hg) हैं। चित्रमय उपकरण सहायक हो सकते हैं, मर्क्यूरियल के लिए मैं कछुआ की सलाह देता हूं ।

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