मुझे स्रोत नियंत्रण के लिए पहली प्रतिबद्ध कब बनाना चाहिए?


118

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

मान लीजिए, उदाहरण के लिए, मेरे पास एक परियोजना है जिसमें एक एकल कोड फ़ाइल है। अत्यंत मूल कार्यक्षमता (1 या 2 सुविधाओं) के साथ परियोजना को प्राप्त करने के लिए बॉयलरप्लेट कोड की लगभग 10 लाइनें और 100 लाइनें लगेंगी। क्या मुझे पहले जाँच करनी चाहिए:

  1. खाली फाइल?
  2. बॉयलरप्लेट कोड?
  3. पहली विशेषताएँ?
  4. किसी और बिंदु पर?

इसके अलावा, एक विशिष्ट बिंदु पर जांच करने के क्या कारण हैं?


10
घर जाने से पहले, आप अपनी स्वयं की कार्य शाखा के लिए प्रतिबद्ध होते हैं।
रिएक्टगुलर

59
पहली कमेटी हमेशा सोर्सफेज प्रोजेक्ट बनाने, वेबसाइट सेट करने, मेलिंग लिस्ट को कन्फिगर करने और कई सालों तक प्रोजेक्ट के बारे में ब्लॉगिंग करने के बाद ही बनाई जानी चाहिए। :)
Kaz

15
बहुत जल्दी या अक्सर कमिट करने के लिए क्या है?
आइजैक राबिनोविच

13
mkdir myproj; सीडी मायप्रोज़; गिट init; काम शुरु करें।
एडी बी

10
मैंने सीखा कि वीडियो गेम में क्विक-सेव बटन से प्रगति की बचत कैसे करें। नियम कुछ इस तरह है: Will I mind having to redo that part ? Save : SaveAnyway;मैं स्रोत नियंत्रण के लिए एक ही दृष्टिकोण लेता हूं, मैं काम करने के लिए कुछ भी इंतजार नहीं करता हूं या कहीं भी पूरा होने के करीब नहीं हूं, मैं बस इंतजार करता हूं जब तक मुझे कुछ पता नहीं चल जाता है या मैं पर्याप्त बदलाव नहीं करता हूं जो मैं नहीं चाहता हूं फिर से पता लगाने की कोशिश करें या उन परिवर्तनों को फिर से करें, फिर मैं जांच करता हूं। इसीलिए लोग प्रोजेक्ट बनाने के बाद बचत करने का सुझाव देते हैं; प्रोजेक्ट बनाना कष्टप्रद होता है, इसलिए जांच करें कि आपको फिर से ऐसा नहीं करना पड़ेगा।
जिमी हॉफ

जवाबों:


103

जैसे ही आपके पास एक समझदार "इकाई" पूरी हो, आपको प्रतिबद्ध होना चाहिए।

एक इकाई क्या है? यह इस बात पर निर्भर करता है कि आप क्या कर रहे हैं; यदि आप एक विजुअल स्टूडियो प्रोजेक्ट बना रहे हैं, उदाहरण के लिए, इसके निर्माण के ठीक बाद समाधान करें, भले ही इसमें कुछ भी न हो।

वहाँ से, जितनी बार संभव हो कमिट करें, लेकिन फिर भी केवल "इकाइयां" (जैसे कक्षाएं, कॉन्फ़िगरेशन, आदि) पूरी करें; ऐसा करने से आपका जीवन आसान हो जाएगा यदि कुछ गलत हो जाता है (आप परिवर्तनों के एक छोटे सेट को वापस कर सकते हैं) और संघर्षों की संभावना कम कर देगा।


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

16
एक प्रतिबद्ध कभी छोटा नहीं होता! अपने आप को अपने परिवर्तनों से बचना मत!
लियोनार्डो हरेरा

1
मैं आपके कार्य प्रवाह के आधार पर कई छोटे, बार-बार आने वाले लोगों को +1 कहता हूं और अपना काम पूरा करने के लिए कितने लोग आपकी रेपो में रुचि रखते हैं। इतिहास को फिर से लिखने की जीआईटी की क्षमता ताकि उन 15 कमिट्स पर FooSerializerएक बात बन सके, इससे पहले कि आप इसके साथ मदद करें।
टिम पोस्ट

1
@loldop: यह आपके द्वारा उपयोग किए जा रहे संस्करण नियंत्रण सॉफ़्टवेयर पर निर्भर करता है। मान लीजिए कि आप Git का उपयोग कर रहे मान लीजिए: आप कर सकते हैं भी छिपा सकते आप क्या किया है, ठीक करते हैं, यह प्रतिबद्ध, रखे परिवर्तन पुन: लागू करने और उन पर काम पुनरारंभ करें। तोड़फोड़ में, आप दूसरे फ़ोल्डर में रिपॉजिटरी का एक और चेकआउट कर सकते हैं, बग को ठीक कर सकते हैं और अपने रिफ़ैक्टरिंग को प्रभावित किए बिना वहाँ रिपॉजिटरी के लिए प्रतिबद्ध कर सकते हैं। या एक पैच फाइल बनाएं, अपने एडिट को वापस करें, बग को ठीक करें, कमिट करें, फिर से पैच अप करें। इसे करने के कई तरीके हैं।
अल्बेरियो

1
शायद यह 2nd, 3rd प्रतिबद्ध आदि का एक अच्छा जवाब है, लेकिन पहले सिर्फ खाली होना चाहिए।
फेलिप

143

जहां तक ​​मेरा संबंध है, आपका स्रोत नियंत्रण रिपो मूल परियोजना सेटअप का हिस्सा है, इसलिए मैं अपनी खाली परियोजना को उत्पन्न करने के बाद सही करता हूं।


29
जल्दी करो, अक्सर प्रतिबद्ध।
लियोनार्डो हरेरा

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

2
धन्यवाद @AntonyScott मैं स्वीकृत उत्तर के साथ 100% सहमत हूं, लेकिन जब मैंने यह लिखा था, तो मुझे 1500 शब्द निबंध के साथ पानी को मैला करने का यह दृष्टिकोण था कि मैं स्रोत नियंत्रण कैसे और क्यों प्रबंधित करता हूं। इसलिए मैंने इसे सरल और बिंदु पर रखने का फैसला किया।
जॉन मैकइंटायर

2
हाँ, +1। यदि आप एक खाली कमिट के बारे में बुरा महसूस करते हैं, तो .itignore (या समतुल्य) से शुरू करें क्योंकि Xion ने एक अन्य उत्तर में लिखा था [ programmers.stackexchange.com/a/176845/5405] । यह एक बहुत ही स्वाभाविक पहली प्रतिबद्धता है।
हनो फिएट

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

77

बिता कल

... वैकल्पिक रूप से, यदि आप समय-यात्रा करने में असमर्थ हैं ...
(शायद आपकी कार 88mph तक नहीं मिल सकती है, या आपके फ्लक्स कैपेसिटर बस तड़क गए हैं)

अभी

नई परियोजनाओं को खूनी मौके पर प्रतिबद्ध किया जाना चाहिए, यह पागल नहीं है, और समकालीन डीवीसीएस सिस्टम ने कमिट्स से बचने के लिए हरgit init . ; git add * ; git commit -m initial-commit कमजोर करने वाले बहाने को हटा दिया है : अब, इससे पहले कि बहुत देर हो चुकी है, क्योंकि यह पहले से ही हो सकता है।

एक और अधिक समझदार, तर्कपूर्ण, प्रश्न यह हो सकता है: "मुझे एक स्थापित परियोजना पर एक रिपॉजिटरी प्रबंधित टीम पर एक साझा स्रोत नियंत्रण के लिए अपने कॉमेट्स को कब मर्ज करना चाहिए ?" (ध्यान दें कि विशेषण, विशेषण महत्वपूर्ण हैं) और मुझे लगता है कि अधिकांश अन्य उत्तर वास्तव में उसी का उत्तर देने की कोशिश कर रहे हैं।

आपकी व्यक्तिगत शाखा को पागल पसंद करने के लिए , कम से कम एक बार हर दिन , सोने से पहले की सराहना की जानी चाहिए । आप बस सुबह उठ सकते हैं, और पा सकते हैं कि पिछली रात को आप क्या नरक थे, इसका कोई सुराग नहीं है। वीसीएस को आपको इसके खिलाफ कवर करना चाहिए, और बहुत हाल के उप-संस्करण-के-ए-उप-संस्करण में रोलबैक करने का अवसर है जो अच्छी तरह से संकलित करता है, आसानी से चलता है, और / या परीक्षण पास आपका सबसे अच्छा विकल्प हो सकता है।


3
मैं उन बदलावों के बारे में नहीं सोचता, जो संकलन नहीं करते, खासकर दिन के अंत में। अगले दिन आपके पास कुछ ऐसा है जो संकलित नहीं करता है लेकिन आपके पास अभी भी आपका प्रतिबद्ध इतिहास है - यदि आप अपना इतिहास "गंदा" नहीं चाहते हैं तो हर अच्छे DVCS में रोलबैक के विकल्प हैं (मुझे लगता है कि हम सभी सहमत हैं कि DVCS ही एकमात्र तरीका है जाना।)
लियोनार्डो हरेरा

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

20

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

व्यक्तिगत रूप से, मेरी पहली प्रतिबद्धता में आम तौर पर केवल .gitignore फ़ाइल (या समतुल्य) होती है जिसमें मुझे पता है कि कुछ फिल्टर की आवश्यकता होगी, जैसे * .py [सह] पायथन कोड के लिए। मूल परियोजना सेटअप और / या पहले सरलतम प्रोटोटाइप वह है जो आमतौर पर अनुसरण करता है।


मैं भी कुछ ऐसा ही करता हूं। चूंकि मैं GitHub का उपयोग करता हूं, मेरे पास हमेशा एक बेसिक README फाइल होती है, यहां तक ​​कि इसमें सिर्फ प्रोजेक्ट का नाम होता है। मुझे लगता है कि वहाँ जाने से फाइल होने से यह अधिक संभावना है कि मैं इसे भविष्य में अद्यतन करूँगा :)।
तिखन जेल्विस

16

पहला कमिट एक README फाइल हो सकता है जिसमें प्रोजेक्ट की एक लाइन सारांश या प्रोजेक्ट के पहले मील के पत्थर के बारे में पर्याप्त जानकारी होगी। व्यापक विषयों में भी शामिल हो सकते हैं:

  • परिचय
  • परियोजना विवरण
  • परियोजना की संरचना
  • कोडिंग सम्मेलनों
  • कैसे करें:
    • निर्माण
    • परीक्षा
    • तैनात
  • ज्ञात मुद्दों और workarounds
  • करने के लिए सूची
  • उपयोग की शर्तें

किसी परियोजना में परिवर्तन करने से पहले README को अपडेट करने की प्रथा को रीडमे ड्रिवेन डेवलपमेंट के रूप में भी जाना जाता है और यह आपको उन परिवर्तनों को बनाने में समय लगाने से पहले परिवर्तनों के माध्यम से सोचने की अनुमति देता है।

कोई भी व्यक्ति जो इस सॉफ़्टवेयर में योगदान देना या उपयोग करना चाहता है, उसके बाद README के ​​साथ शुरू होगा।


12

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

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


3
मेरा नियम यह है, इसके अतिरिक्त कि मैं यह भी चाहता हूं कि यह "उस समय बिंदु हो जहां कोड संकलित हो"। ऐसा कमिट करें जो कंपाइल और बाइसेक्टिंग नहीं करता है, इससे बहुत ज्यादा गुस्सा आता है, अगर आपको कभी ऐसा लगता है जब आपने कुछ तोड़ दिया है।
वॉरेन पी

कम से कम गिट के लिए एक अस्थायी शाखा का पता नहीं होगा? मैंने git bisectज्यादा इस्तेमाल नहीं किया है।
कीथ थॉम्पसन

मैं रिबोर के बिना मर्क्यूरियल का उपयोग करता हूं इसलिए मैं सभी स्थायी के रूप में व्यवहार करता हूं
वॉरेन पी

7

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

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


6

निश्चित नहीं है अगर यह उल्लेख किया गया था।

लेकिन यह सुनिश्चित करें कि आप क्या रन / संकलन करते हैं! तो कोई सिंटैक्स त्रुटियां, आदि।

चेकआउट कोड की तुलना में अधिक निराशाजनक कुछ भी नहीं है जो टूट गया है।


वास्तव में, समझ में आता है!
Aquarius_Girl

मैं असहमत हूं। यदि मेरा कोड यह संकलित नहीं करता है कि मैं क्या करना चाहता हूं, तो मैं प्रतिबद्ध संदेश में कहीं न कहीं डब्ल्यूआईपी लिखता हूं। तब मैं उन कमिट्स को अनदेखा कर सकता हूं जब मुझे नवीनतम संस्करण की आवश्यकता होती है जो संकलित करता है।
मिन्थोस

5

सॉफ़्टवेयर परीक्षण (TDD दृष्टिकोण) से संबंधित अन्य बिंदु जैसे ही आपके पास हरे रंग के नए परीक्षण मामले होंगे, वैसे ही कमिट हो जाएंगे। इसका मतलब यह होगा कि आपके पास कोड का एक नया "यूनिट" होगा।


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

5

इससे पहले कि आप कुछ मूर्खतापूर्ण करें।

जादुई शक्तियों के बिना हम में से उन लोगों के लिए, इसका मतलब है कि कम और अक्सर।

यदि आप अपने आप से काम कर रहे हैं, तो इसे हर उस समय करें जब आपको एक पेय मिल जाए या जो भी।

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


4

परियोजना में लगभग 2 ~ 3 घंटे।

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

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

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

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


3

बहुत से लोग पहले ही "सही दूर" जवाब दे चुके हैं, और मैं 100% सहमत हूं। मुझे वीसीएस की अनदेखी पैटर्न (यानी या समतुल्य) के साथ शुरू करने के लिए एक्सियन का सुझाव भी पसंद है .gitignore

मुझे लगता है कि यह बहुत सहमत है कि जल्दी शुरू करने के लिए कोई डाउनसाइड नहीं हैं। मैं अपडाइड जोड़ना चाहूंगा:

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

2

यह निर्भर हो सकता है कि आप कौन से VCS का उपयोग कर रहे हैं।

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

एसवीएन के साथ, आप प्रत्येक कमिट के साथ ऊपर की ओर धक्का दे रहे हैं ताकि आपको वास्तव में शुरू करने की विलासिता न मिले जैसे आप गिट के साथ करते हैं। इस मामले में, यह जल्दी करने के लिए फायदेमंद नहीं हो सकता है अगर आपको लगता है कि आप इस प्रक्रिया को जल्दी शुरू करेंगे। हालांकि यह उस व्यक्ति को कोडिंग करने वाला है।


2

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

मैं ज्यादातर समय अपने दम पर काम कर रहा हूं इसलिए मुझे कबूल करना चाहिए कि मैं सुस्त हो रहा हूं लेकिन मैं घर जाने से पहले आम तौर पर कमिट करता हूं। इस तरह अगर मैं इसे कल नहीं बनाता हूं तो मेरे सहकर्मी मुझे छोड़ सकते हैं।

मैं वर्तमान में काम में कछुआ / एसवीएन का उपयोग कर रहा हूं।


2

कमिट खाली परियोजना अभी। जब आप प्रोजेक्ट पर काम कर रहे हों तो प्रति घंटे कई बार कमिटमेंट करते रहें। भले ही कोड संकलन न हो। मैं उन पर नज़र रखने के लिए प्रतिबद्ध मालिश में "डब्ल्यूआईपी" के साथ ऐसे कमिट्स को चिह्नित करता हूं।

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

जब आप अपनी टीम को अपना कोड देखने के लिए अपनी टीम की आवश्यकता के लिए किसी प्रोजेक्ट रेपो में (aka। Push ) चेक इन करें । इससे पहले कि आपका कोड आपकी टीम द्वारा देखे जाने के लिए तैयार है, यदि आप मेरे जैसे कुछ भी हैं।

यदि आप अपनी टीम के लिए अच्छा बनना चाहते हैं, तो उन्हें टीम रेपो में धकेलने से पहले अपने कमिट्स को स्क्वैश करें।


1

मैं सभी लेखों के माध्यम से चला गया हूं और मुझे लगता है कि हमें पहले से ही बहुत सारे अच्छे समाधान मिले हैं, लेकिन मैं अपनी कार्यप्रणाली आपके साथ साझा करना चाहता हूं।

फ्रेमवर्क निर्माण (स्क्रैच से दाएं) पर काम करते समय प्रत्येक मॉड्यूल के लिए बहुत सारे बदलाव होने वाले हैं जब तक कि मॉड्यूल पूरा या अंतिम रूप नहीं ले लेता। इसलिए मेरे पास हमेशा 2 स्थान होते हैं, एक का नाम डायनामिक और दूसरे का नाम STATIC है। जब परिवर्तन हो रहे हैं और फ्रेमवर्क को अभी अंतिम रूप नहीं दिया गया है, तो यह DYANMIC स्थान में प्रतिबद्ध है और एक बार जब यह पूरा हो जाता है और अंतिम रूप दिया जाता है, तो मैं इसे STATIC स्थान पर ले जाता हूं। इसलिए मेरे पास एक पूर्ण स्रोत नियंत्रण है।

धन्यवाद


0

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

यदि आप एक टीम में हैं, तो मैं आपका नेतृत्व करने का सुझाव दूंगा, या जो कोई भी चुना जाएगा, आधार परियोजना बनाने के लिए, निर्भरताएं निर्धारित करें, और उस कंकाल (नींव जिसे आपकी परियोजना का निर्माण किया जाएगा) की जांच करें।

आप यह भी सुनिश्चित करना चाहते हैं कि आपके कार्य, रिलीज़, ट्रंक आदि की शाखाएँ हैं, ताकि आपकी प्रक्रिया ठोस हो।

यदि आप एक ऐसे प्रोजेक्ट के लिए एक नए "कार्य" पर काम कर रहे हैं, जो पहले से ही चल रहा है और आप अपनी स्वयं की कार्य शाखा में हैं, तो अपना रात्रिकालीन चेक-इन करें ताकि आप अपना कार्य सुरक्षित रखें।


0

आमतौर पर जब भी मैं कुछ नया जोड़ता हूं, उसमें जांच करता हूं, लेकिन असतत कमेंट में सामान अलग करने की कोशिश करता हूं।

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

जब मैं बैकअप बिंदु चाहता हूं, तो मैं भी ऐसा कर सकता हूं (यानी "अगर मैं जो कोशिश करता हूं वह काम नहीं करेगा या बहुत जटिल हो जाता है, तो मैं कोड पर वापस आना चाहता हूं क्योंकि यह अब है", या जब कोई मुझे छोड़ने के लिए कहता है तो मैं क्या हूं कर रहा है और कुछ जरूरी मुद्दे को ठीक कर रहा है)।

यदि आप एक केंद्रीकृत स्रोत नियंत्रण प्रणाली का उपयोग करते हैं, तो आप बैकअप बिंदुओं के लिए मनमाने ढंग से प्रतिबद्ध नहीं हो सकते हैं, क्योंकि आपकी टीम में हर किसी को प्रभावित करने / काम करने के लिए प्रतिबद्ध नहीं करता है।

आमतौर पर जब मैं बॉयलरप्लेट कोड जोड़ना शुरू करता हूं (उदाहरण के लिए एक django वेबसाइट में एक नया वेबप जोड़ें), तो मैं हर ऑपरेशन करता हूं जो मैं करता हूं।

यदि मैं कोड उत्पन्न / लिखने के लिए एक ट्यूटोरियल का अनुसरण करता हूं, तो मैं प्रतिबद्ध संदेशों के लिए ट्यूटोरियल में चरण नामों का उपयोग करता हूं। इस तरह, मैं संशोधन कर सकता हूं और यह देख सकता हूं कि किसी ट्यूटोरियल ने बाद में क्या किया।

मान लीजिए, उदाहरण के लिए, मेरे पास एक परियोजना है जिसमें एक एकल कोड फ़ाइल है। अत्यंत मूल कार्यक्षमता (1 या 2 सुविधाओं) के साथ परियोजना को प्राप्त करने के लिए बॉयलरप्लेट कोड की लगभग 10 लाइनें और 100 लाइनें लगेंगी।

यह निर्भर करेगा कि सामान जोड़ना कितना मुश्किल है:

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

  • यदि कोड गैर-तुच्छ था, तो मैं हर बार कुछ नया (कहीं भी कोड की हर दो पंक्तियों के बीच सौ या तो) जोड़कर कुछ नया करूंगा।

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