2009-06-12 6 views
8

मुझे यह जानने में दिलचस्पी होगी कि संस्करण रिलीज को नए रिलीज़ के मुद्दे के लिए कैसे संभालते हैं।संबंधित फ़ाइलों (प्रलेखन) में नई रिलीज के लिए संस्करण संख्या बंपिंग

तुम कैसे आदमी पृष्ठों की तरह संबद्ध फ़ाइलों में संस्करण संख्या, आदि

सॉफ्टवेयर GNU उपकरण श्रृंखला इसलिए autoconf, automake, आदि के साथ निर्माण कर रहा है संभाल करते उपलब्ध है और आवेदन की संस्करण संख्या के लिए उपयोग किया जाता है । तो जानकारी का पुन: उपयोग किया जा सकता है।

गिट का उपयोग वीसीएस के रूप में किया जाता है।

एक संभावना अतिरिक्त, मेकफ़ाइल.एम में लक्ष्य पेश करेगी जो सभी संबंधित फ़ाइलों में संस्करण संख्या और तिथियों को प्रतिस्थापित करने के लिए एक sed/awk करता है। एक नई रिलीज के विकास की शुरुआत में उस लक्ष्य को शुरुआत में (शाखा के ठीक बाद) कहा जा सकता था।

तब परियोजना सही जानकारी के साथ निर्माण कर सकती है जब लोग परियोजना के गिट क्लोन या रिलीज टैरबॉल किए जाने पर सही जानकारी के साथ निर्माण कर सकते हैं। बेशक किसी को एक नई रिलीज के विकास शुरू करते समय इस लक्ष्य को चलाने के लिए याद रखना होगा।

एक और विकल्प दूर लक्ष्य के लिए एक हुक के साथ sed/awk प्रतिस्थापन करना होगा। लेकिन इससे राज्य में प्रोजेक्ट की गिट रिपोजिटरी को संबंधित फाइलों के साथ कोई सही संस्करण संख्या संबद्ध नहीं होगी।

मैं पहला समाधान करना पसंद करता हूं क्योंकि यह गिट इतिहास के अंदर सही संस्करण संख्या रिकॉर्ड करता है।

एक sed/awk प्रतिस्थापन करते समय आप इसे "इन-फाइल" या टेम्पलेट इन-फ़ाइल के साथ ऑटोकॉन्फ़/ऑटोमैटिक उपकरण करते हैं। मैं दोनों तरीकों से फायदे और नुकसान दोनों देखता हूं।

संबंधित फाइलों के संस्करण को आप कैसे प्रबंधित करते हैं। क्या आप विकास चरण की शुरुआत में उन्हें बदलते हैं, क्या आप उन्हें शिपिंग शिपिंग से पहले बदलते हैं, क्या आप इन्फाइल प्रतिस्थापन करते हैं या आप टेम्पलेट का उपयोग करना पसंद करते हैं?

THX।

+0

यह वास्तव में 2 प्रश्न है, आप उन्हें और अधिक स्पष्ट रूप से अलग कर सकते हैं। –

उत्तर

6

मुझे लगता है कि ऐसा करने का मानक तरीका गिट की हुक प्रणाली और एम 4 या sed/awk का उपयोग करने के लिए खोज/प्रतिस्थापन करने के लिए है। आपको बस प्रत्येक फ़ाइल (शायद शीर्षलेख में) में एक टिप्पणी में एक विशेष टोकन की आवश्यकता है।

यहाँ githooks पर संदर्भ है और यहाँ एक ही समस्या को सुलझाने लोगों द्वारा लिखे गए कुछ पन्नों है: एक में संस्करण संख्या के भंडारण पर भरोसा करते हैं

इन दोनों अपने स्रोत पेड़ में कहीं फ़ाइल करें।

मैं भी 0release नामक एक लिया गया जो कि रिलीज निर्माण (और संस्करण संख्या सेटिंग) को स्वचालित करने का दावा करता है।

अंत में, रिलीज़ संख्या के बारे में, इस कई अन्य प्रश्न में संबोधित किया जाता है:

+0

मैंने अन्य प्रश्नों को देखा है। और मेरा प्रश्न एप्लिकेशन के संबंधित फाइलों में संस्करण संख्या प्राप्त करने के लिए तकनीकी समाधान के बारे में अधिक उपयोग करने के लिए इस योजना के बारे में इतना कुछ नहीं है, जो config.ac से संस्करण संख्या प्राप्त करता है, जो कि संस्करण संख्या स्रोत में है पेड़। थिक्स के साथ संकेत के लिए THX। इससे मेकफ़ाइल के मैन्युअल रन को खत्म कर दिया जाएगा और Makefile.am में अतिरिक्त लक्ष्य होगा। मैं 0release पर भी एक नज़र डालेगा। –

1

हम क्लासिक प्रमुख का उपयोग .minor.patch प्रणाली, जो लागू हो जाता है उम्मीदवारों को 'टैग' के रूप में रिलीज करने के लिए, हमारे पास एक स्क्रिप्ट है जो एक गिट 'टैग ऑब्जेक्ट' का उपयोग करने के बजाय संस्करण संख्या के रूप में एक प्रतिबद्धता टैग करती है। सभी संस्करण संख्या 'हाथ से' की जाती है। यह काफी अच्छी तरह से काम करता है, क्योंकि संस्करण संख्या 'स्टेजिंग पर स्टेजिंग' स्क्रिप्ट द्वारा बनाई गई है, जो विकास प्रक्रिया में बहुत बाद में है। हम किसी भी गिट हुक का उपयोग करने से परेशान नहीं हैं, क्योंकि अगर हमें कोई प्रतिबद्धता विकास वातावरण नहीं छोड़ रही है तो हमें वास्तव में आवश्यकता नहीं है, तो उसे आंतरिक SHA कोड के अलावा आईडी की आवश्यकता नहीं है।

हम यह लागू करने का प्रयास करते हैं कि प्रत्येक 'पैच' रिलीज एक ही प्रमुख, मामूली टैग वाले अन्य संस्करणों के साथ बाइनरी संगत होना चाहिए।

इस तरह, किसी टैग के साथ कुछ भी कम से कम बनाना चाहिए, लेकिन यह संभव है या काफी संभावना है कि यह spec पर काम नहीं करेगा।

क्यूए विभाग को 'क्यूए अनुमोदित' की किसी भी चीज़ पर हस्ताक्षरित टैग ऑब्जेक्ट बनाने के लिए एक परिष्करण करना होगा, लेकिन अब हम इसके लिए अन्य कागजी कार्रवाई पर भरोसा करते हैं।

9

आजकल एक आम समाधान है git से संस्करण उत्पन्न करने के लिए एक m4_esyscmd तर्क के साथ AC_INIT को आह्वान करना है। उदाहरण के लिए, autoconf के configure.ac लाइनों में शामिल हैं:

 
AC_INIT([GNU Autoconf], 
     m4_esyscmd([build-aux/git-version-gen .tarball-version]), 
     [[email protected]]) 

जहां निर्माण-aux/Git संस्करण पीढ़ी एक सरल स्क्रिप्ट है कि 'Git का वर्णन' कॉल संस्करण संख्या उत्पन्न करने के लिए है। (gnulib देखें)

इस दृष्टिकोण में कमीएं हैं, लेकिन यह प्रभावी हो सकती है।

+0

विलियम के बारे में आप क्या सोच सकते हैं? –

+1

प्राथमिक दोष संस्करण संख्या को बंप करने में शामिल व्यय है। कोड में परिवर्तन को प्रसारित करने के लिए, आपको ऑटोोटूल चेन को फिर से चलाने की आवश्यकता है, जो सभी स्रोत फ़ाइलों का पुन: संकलन ट्रिगर करेगा जिसमें config.h शामिल है, इसलिए इसका मूल रूप से संपूर्ण प्रोजेक्ट का पुनर्निर्माण करना है। चूंकि संस्करण गिट रेपो से आ रहा है, इसका मतलब है कि प्रत्येक प्रतिबद्धता पुनर्निर्माण को मजबूर करती है। Autoconf में उपयोग किया जाने वाला वर्तमान मॉडल जीएनयूमेकफाइल में कुछ नियमों के माध्यम से केवल 'मेक डिस्ट' या 'डिस्टचेक' पर परिवर्तन का प्रचार करके काम करता है। Autotools सूचियों पर समाधान पर चर्चा की जा रही है। –

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