वास्तव में BIG स्रोत कोड के लिए क्या शब्द है? [बन्द है]


37

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

BTW, एक अच्छा अभ्यास सभी एक साथ कई बदलाव कर रहा है?

अद्यतन: प्रेरक चर्चा के लिए धन्यवाद दोस्तों! लेकिन मुझे लगता है कि "कोड बम" वह शब्द है जिसकी मुझे तलाश है।


15
"ब्रेकिंग कमिट"। :-)
पीटर के।

3
व्यक्तिगत रूप से मैं एक वचन कहता हूँ कि आकारcluster f...
रामहुंड

1
मेरे बॉस हर समय ऐसा करते हैं। चेक-इन टिप्पणी: "सब कुछ; ओ)"
मेटलमेस्टर

प्रश्न के लिए +1 क्योंकि मैं अब तक हर उत्तर से प्यार करता हूं, और अपने करियर में कम से कम एक बार कम से कम एक पाप करने के लिए पीड़ित हूं और चाहता हूं कि अन्य लोग ऐसा न करें =)
पैट्रिक ह्यूजेस

मैं कह सकता हूँ कोड हिमस्खलन!
ब्रायन

जवाबों:


50

(१) बेन कॉलिन्स-सुस्मान : "..." कोड बम "। यानी, जब कोई व्यक्ति एक नए स्रोत के साथ एक ओपन सोर्स प्रोजेक्ट को दिखाता है, जो लिखने में महीनों लग जाते हैं तो आप क्या करते हैं? समीक्षा करने का समय किसके पास है? कोड की हजारों लाइनें? ... "

(2) डैन फ़ाबुलिच : "द कोड बॉम्ब, या: द न्यूबी विद बिग आइडियाज़ ... एक कोड बम एक पैच है जो इतना बड़ा है कि कोई भी इसकी समीक्षा नहीं कर सकता है।"

(३) कोड का Google समर: दिशानिर्देश : "जल्दी कमिट करें, अक्सर कमिट करें ... कृपया पूरे दिन काम न करें और फिर एक कोड बम में सब कुछ बाहर धकेल दें । इसके बजाय, प्रत्येक कमिट को केवल एक कार्य के लिए आत्म-निहित होना चाहिए। जिसे लॉग संदेश में सारांशित किया जाना चाहिए। "

(४) जेफ एटवुड : "कोड-बम ... नियम # ३०: अंधेरा मत जाओ ।"


लिंक 2 और 4 सीधे लिंक और उद्धरण लिंक 1. अवधारणा के प्रसार के साथ कुछ भी गलत नहीं है, लेकिन यह थोड़ा कम प्रासंगिक है। मुझे यह शब्द पसंद है, लेकिन ऐसा नहीं लगता है कि यह बहुत अधिक है।
ज्येष्ठ

1
क्या होगा अगर कमिटेड कोड नया कोड है जो बाकी प्रोजेक्ट से काफी अलग है? इस मामले में मुझे लगता है कि (लगभग) समाप्त और साफ-सुथरा कोड की एक बड़ी प्रतिबद्धता कई छोटे-छोटे कामों से बेहतर है, जो लोगों को समीक्षा करने के लिए मजबूर करते हैं (१) मध्यवर्ती बग फिक्स, (२) कक्षा का नाम बदलने जैसे और ( 3) प्रारंभिक कोड जो अंततः नष्ट होने वाला है। बस मेरे 2 सेंट।
जियोर्जियो

यह इस तरह का कारण है कि मैं इतिहास के पुनर्लेखन /
पुनर्विचार के

@ जियोर्जियो - यही शाखाएं हैं।
ब्रायन

@ ब्रायन: हाँ, यह एक संभावना है। इस मामले में आपके पास मुख्य शाखा पर एक बड़ी प्रतिबद्धता है जब आप शाखा में आपके द्वारा विकसित कार्यक्षमता का विलय करते हैं।
जियोर्जियो

38

हम शायद इसे एक बुरा कमिटमेंट कहते हैं । :)

बुरा अभ्यास

और हाँ, यह आमतौर पर बुरा व्यवहार माना जाएगा , क्योंकि इसके नकारात्मक प्रभाव हैं:

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

स्वीकार्य मामले

हालांकि, आपके पास ऐसे मामले हो सकते हैं जहां बड़े कमिट पूरी तरह से स्वीकार्य हैं । उदाहरण के लिए:

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

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


इसके अलावा, मुझे वास्तव में नहीं पता है और मुझे नहीं लगता कि मैंने कभी भी एक बड़ी प्रतिबद्धता के लिए एक विशेष नाम सुना है। एक राक्षस-कमिट? एक मोटी-कमिट?

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


11
एक गॉडजिला कमिट! Eeeeeeeek !!!
पैटर तोर्क

@ PéterTörök: इसे पसंद करना। चलिए इसे एक ट्रेंड बनाते हैं। अन्य विकल्प: एक व्हेल कमिट, एक गर्गस्यूटेन कमिट, या एक बहुत ही साधारण रूप से बिगफैटकमाइट।
जाइलम

1
हाँ, या तो "बुरा" या "देर से"। अगर आपकी कंपनी में इसके लिए कोई नाम नहीं है, तो इसे डेवलपर के नाम पर नाम दें। "हे नए आदमी, एक जेरी मत करो! जल्दी करो और अक्सर प्रतिबद्ध।"
चोबन

एक जेरी मत करो, यह एक उपयोगी दृष्टिकोण है! इसके अलावा बड़े पैमाने पर प्रतिबद्ध तनावग्रस्त डेवलपर्स से स्रोत हो सकते हैं या संस्करण के उपयोग को समझ नहीं सकते हैं। ज्ञान की जाँच करें!
इंडिपेंडेंट

अगर किसी का नाम जेरी है तो क्या होगा?
लोकेक फ्योर-लैक्रोइक्स

12

BTW, एक अच्छा अभ्यास सभी एक साथ कई बदलाव कर रहा है?

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

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

तो, यह एक कमिट में छपी फाइलों की संख्या को देखने की तुलना में अधिक है।


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

8

मैंने सुना है कि यह शब्द "चंकी चेक-इन" है । और मैं उनका प्रशंसक नहीं हूं। मुझे छोटे कमिट्स पसंद हैं जो यह सुनिश्चित करते हैं कि प्रोजेक्ट में उचित कदम पर और कुछ नहीं टूटे। बड़ी प्रतिबद्धता आम तौर पर उन मुद्दों के साथ होती है जो उस समय से कुछ समय के लिए पुन: उत्पन्न होते हैं।


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

कंपनी मैं उस समय थी जब डेवलपर ने उस शब्द का उपयोग किया था जो SourceGear वॉल्ट का उपयोग कर रहा था।
जेसी सी। स्लाइसर

3

मैं इसे "विशिष्ट एसवीएन कमिट" या "कल रिलीज डे कमिट" कहता हूं

जितना मुझे एसवीएन से प्यार है, मैं सिर्फ इस तथ्य से दूर हूं कि मैं स्थानीय कमिट नहीं कर सकता।

संपादित करें: वे आम तौर पर प्रतिबद्ध संदेश में "सामान" और "बीयर" शब्द हैं।

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



2
  • प्रारंभिक प्रतिबद्धता - वह परियोजना जो एसवीएन में फेंक दिए गए संशोधन नियंत्रण के अधीन नहीं थी
  • रिफैक्टरिंग - आर्किटेक्ट के पास / से स्मर्फ नामकरण कन्वेंशन के वर्ग नामों को बदलने या पैकेज पदानुक्रम की जड़ को बदलने के बारे में शानदार विचार है
  • कोड प्रारूप - वास्तुकार ने कोड इंडेंट को 4 से 3 स्थानों पर बदलने या यूनिक्स से विंडोज (या वापस) में लाइन अंत को बदलने का फैसला किया है
  • शुक्रवार की प्रतिबद्धता - जो हमेशा शुक्रवार को अपने पूरे सप्ताह के काम को 16:30 पर शुरू कर रहा है
  • uuups प्रतिबद्ध - टेड ने गलती से रूट निर्देशिका को हटा दिया है, ने कहा कि, और अब वह एसवीएन में पूरी फाइल पदानुक्रम को एक बार फिर से पंप करता है

0

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

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

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