2010-09-25 16 views
7

जरूरतों चैंज करने के लिएरणनीति इस प्रश्न के लिए

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

आज, हम झंडे का उपयोग कर रहे में संदेशों के लिए प्रतिबद्ध ऐसे

Add|Ref|Rem|Fix: <msg> के रूप में हमेशा की तरह के लिए प्रतिबद्ध हैं।

जैसे, इस पर मेरा पहला वार उदाहरण

CL-Add: feature X (सीएल = बदलाव का) के लिए उन झंडे के लिए एक और टियर जोड़ने के लिए, और फिर पार्स सभी बदलाव का में जोड़ने के लिए ^CL-(Add|Ref|Rem|Fix) के लिए संदेशों के लिए प्रतिबद्ध होगा।

लेकिन फिर, आप चेंजलॉग (यानी उच्च स्तर) के लिए केवल संदेश लिखने की संभावना से कैसे संपर्क करेंगे; या एक ही चेंजलॉग मुद्दे से संबंधित कई संदेश। सुविधा-शाखाओं को विलय किए जाने पर शायद चेंजलॉग संदेशों को निकाला जाना चाहिए? क्या एससीएम की विशेषताएं हैं (उदाहरण के लिए गिट) जो इस मुद्दे को आपके लिए संभालती है?

बस डालें: क्या आसानी से चेंजलोग में उपयोगी प्रतिबद्ध संदेशों को निकालने के लिए कोई उद्योग मानक रणनीति या उपकरण है?

+0

क्या आपने पूर्व-प्रतिबद्ध हुक का उपयोग करने के बारे में सोचा है जो प्रतिबद्धता से पहले चेंजलॉग अपडेट करता है? – dave1010

+0

@ डेव 1010: सवाल यह निर्धारित करने के लिए अधिक लक्षित है कि चेंजलॉग में कौन से संदेश जाना चाहिए, इसे अपडेट नहीं किया जाए। मैंने प्रश्न को दोबारा सुधारने की कोशिश की है, हालांकि वैध टिप्पणी के लिए धन्यवाद! (और मैं मानता हूं कि एक हुक इसे कर सकता है, पोस्ट-प्रतिबद्ध हालांकि; या बिल्ड/तैनाती स्क्रिप्ट के हिस्से के रूप में।) – chelmertz

उत्तर

3

मैंने अतीत में थोड़ी किस्मत के साथ यह कोशिश की है। असल में, यह वास्तव में अधिक प्रत्येक डेवलपर को लगता है कि प्रत्येक प्रतिबद्धता के लिए, उनके प्रतिबद्ध संदेश ग्राहकों के लिए बहुत डरावना है या नहीं। डेवलपर आम तौर पर उस निर्णय को करने के लिए सही व्यक्ति नहीं होते हैं, और एक समय में थोड़ा सा करने में अक्षम होते हैं।

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

यदि आप वास्तव में इस तरह की जानकारी के साथ प्रतिबद्ध संदेश टैग करना चाहते हैं , आपको कम से कम कच्चे प्रतिबद्ध संदेश के बजाय git notes के साथ ऐसा करने पर विचार करना चाहिए। फिर अगर कोई गलती से बग/फीचर/आदि के रूप में गलत तरीके से चिह्नित करके इसे खराब कर देता है, तो आप एनोटेशन अपडेट करके इसे ठीक कर सकते हैं।

+0

यह एक स्वीकार्य समाधान की तरह लगता है, लेकिन मुझे कुछ स्पष्टीकरण की आवश्यकता है।आप 'एनोटेट' (या 'दोष') के साथ कैसे काम करते हैं, और यह 'git प्रतिबद्ध --amend' जैसी चीज़ों से अधिक उपयोगी क्यों है? क्या ऐसा इसलिए है क्योंकि यह प्राथमिकता के किसी अन्य स्तर पर है या कुछ? (अच्छे संदर्भ मदद करेंगे :)) दृष्टिकोण तब होगा जब "पिछले टैग के बाद से" सभी संदेश प्राप्त करें "(पहले बताए गए प्रकार के संदेश हों)" और उन्हें एक अच्छी सूची में दिखाएं "। – chelmertz

+0

क्षमा करें, मुझे नहीं पता कि मैंने क्यों कहा "गिट एनोटेट"। "गिट नोट्स" मेरा मतलब है; मैंने जवाब संपादित किया। – apenwarr

+0

बहुत अच्छा, मुझे अब तक 'गिट नोट्स' के बारे में पता नहीं था। नोट्स लागू करने से पहले क्या आपके पास लॉग diff-by-diff या किसी भी स्मार्ट को ट्रैवर करने का कोई अच्छा संदर्भ है? इस बीच आपको अंक दे रहा है! – chelmertz

1

मैं किसी भी तरह के मानक उपकरण के बारे में पता नहीं है, लेकिन जब से तुम थोड़ी देर के लिए एक जवाब नहीं मिला है, यहाँ कुछ विचार कर रहे हैं:

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

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

लेकिन फिर, आप चेंजलॉग के लिए केवल संदेश लिखने की संभावना से कैसे संपर्क करेंगे (यानी।बहुत उच्च स्तर);

मैं प्रतिबद्ध संदेश में से एक पैरा, और एक अन्य पैराग्राफ में निचले स्तर तकनीकी विवरण में (CL: -tagged) उच्च स्तर का वर्णन डाल कहेंगे,।

या एक ही चेंजलॉग समस्या से संबंधित कई संदेश।

हम इस तरह कुछ के बारे में बात कर रहे हैं, है ना?

  1. (2011-01-03) CL: 200.
  2. (2011-01-11) सीएल करने के लिए डिफ़ॉल्ट whizbar परिवर्तित: 150 करने के लिए डिफ़ॉल्ट whizbar बदल दिया, या 250 अगर foosnub सच है।

और यह वह जगह है जहां मुझे लगता है कि "स्वचालित चेंजलॉग" चीज मुश्किल हो जाती है। जब तक आप तथ्य के बाद प्रतिबद्ध संदेश को पुन: लिखने और संपादित करने के इच्छुक नहीं हैं (जैसे उपरोक्त प्रतिबद्ध (1) से "CL:" को हटाने की तरह), मैं सुझाव दूंगा कि इस बारे में जाने का एकमात्र व्यावहारिक तरीका हर बार रिलीज करने के लिए होता है , अपनी पिछली रिलीज के बाद से गिट लॉग से सभी टैग किए गए पैराग्राफ निकालने के लिए, और परिणामस्वरूप सूची को मैन्युअल रूप से संपादित करें, (1) और (2) जैसी चीज़ों को विलय कर दें, और "फिक्स्ड # 145", "फिक्स्ड # 153" "," एक पंक्ति में फिक्स्ड # 164 "फिक्स्ड # 145, # 153, और # 164।"

आशा है कि मैं कुछ प्रेरणा प्रदान करने में सक्षम हूं। हमें बताएं कि आप क्या कर रहे हैं!

+0

हाँ, मुझे एहसास हो रहा है कि "स्वचालित" को आवश्यक चुनने के लिए सही काम करने के लिए संदर्भित करना चाहिए एक प्रतिबद्धता के वर्तमान इरादे पर पूरी तरह से आधारित चयन करने के बजाय, (जैसे कि "फिक्स्ड बग # 124" वास्तव में बग # 124 को ठीक नहीं करता है, लेकिन बाद में प्रतिबद्धता वास्तव में उस बग को ठीक करती है) से चुनती है। धन्यवाद! – chelmertz

1

vclog पर एक नज़र डालें।

+0

यह वही है जो मैं खोज रहा था, सॉफ्टवेयर का अद्भुत टुकड़ा। – Rubycut

संबंधित मुद्दे