मैं ऑटोोटूल के लिए नया हूं और मैं एक सी परियोजना पर काम कर रहा हूं। मैं अपनी परियोजना को एक गिट भंडार में जोड़ना चाहता हूं। Autotools द्वारा उत्पन्न कौन सी फाइलें मुझे अपने संस्करण नियंत्रण प्रणाली में ट्रैक करने की आवश्यकता है और जिसे अनदेखा किया जाना चाहिए?Autotools द्वारा जेनरेट की गई फ़ाइलों को मुझे वर्जन कंट्रोल रिपोजिटरी में रखना चाहिए?
उत्तर
आपको किसी भी फाइल को संस्करण नियंत्रण के तहत नहीं रखना चाहिए जो हाथ से संपादित नहीं है। इसका मतलब है कि किसी भी जेनरेट की गई फ़ाइल को संस्करण नियंत्रण प्रणाली द्वारा अनदेखा किया जाना चाहिए। मैं मूल रूप से केवल डाल संस्करण नियंत्रण में निम्नलिखित:
configure.ac
Makefile.am
- प्रलेखन फ़ाइलों जैसे
AUTHORS
,NEWS
आदि - उपनिर्देशिका में
Makefile.am
पता करने के लिए एस द्वारा लाया गया "तैयार करने के लिए स्थापित" संस्करण होने का बिंदु Arron, कुछ लोगों को परियोजना की मूल निर्देशिका में एक स्क्रिप्ट शामिल है, जिसे bootstrap
या autogen.sh
कहा जाता है, जब आप एक नई प्रतिलिपि देखते हैं तो आप एक बार दौड़ते हैं। आप मेरी परियोजनाओं में से एक में here में एक उदाहरण देख सकते हैं।एक सरल परियोजना के लिए, अपने autogen.sh
वास्तव में केवल एक ही लाइन से मिलकर करने की जरूरत है:
autoreconf --install || exit 1
हालांकि कुछ लोगों autogen.sh
के अंत में स्वचालित रूप से ./configure
चलाने के लिए पसंद करते हैं।
संस्करण नियंत्रण में सभी जेनरेट की गई फ़ाइलों को ट्रैक क्यों न करें? चूंकि उनकी सामग्री उस मशीन पर निर्भर करती है जिस पर आप निर्माण कर रहे हैं, ऑटोटूल के संस्करण जो आपने उन्हें उत्पन्न किया है, और चंद्रमा का चरण। इन परिवर्तनों में से कोई भी समय, जेनरेट की गई ऑटोोटूल फाइलें बदलेगी, और आपको अपने कामों में बहुत जंक मिलेगा।
इसके अलावा, जो भी इसे बनाने के लिए संस्करण नियंत्रण से आपका कोड जांचता है, उसे उचित विकास उपकरण स्थापित करने की उम्मीद की जानी चाहिए, इसलिए आपको ऑटोोटूल खोने के कारण परेशानी में आने वाले लोगों के बारे में चिंता करने की आवश्यकता नहीं है।
VonC के बारे में सी परियोजनाओं एक configure
फ़ाइल के साथ आ रहा है Makefile
रों उत्पन्न करने के लिए क्या कहते हैं संस्करण से प्रतियां हाल में चेक आउट के लिए जरूरी स्रोत कोड वितरण (.tar.gz
फ़ाइल है कि आप जब आप लिखते हैं make dist
मिलता है), लेकिन नहीं के लिए सच है नियंत्रण।
आम तौर पर, आपको किसी भी जेनरेट की गई फ़ाइलों को एक संग्रह पर नहीं रखना चाहिए (अन्यथा आप परिवर्तन देखेंगे और उन्हें प्रतिबद्ध/उन्हें वापस लेना होगा)। हालांकि, अगर आप अपने भंडार में "तैयार करने के लिए" संस्करण जोड़ना चाहते हैं (= टैग किया गया), तो मैं कॉन्फ़िगर और मेकफ़ाइल फ़ाइलों को रखने की सिफारिश करता हूं। वे एक स्थापित करने के लिए आवश्यक हैं, जो autotools के बिना काम करना चाहिए।
आप मेकफ़ाइल को रिपोजिटरी में बिल्कुल नहीं डाल सकते हैं। रेपो में Makefile.in के शामिल करने के बारे में कुछ बहस है (वे नहीं होना चाहिए, क्योंकि 'तैयार करने के लिए' संस्करणों को केवल टैरबॉल के रूप में मौजूद होना चाहिए) लेकिन मेकफ़ाइल को रेपो में रखना बिल्कुल गलत है। कॉन्फ़िगर स्क्रिप्ट का पूरा बिंदु किसी विशेष मशीन के लिए मेकफ़ाइल (एट अल) विशिष्ट बनाना है, और मेकफ़ाइल प्लेटफ़ॉर्म के आधार पर भिन्न होने के लिए उत्तरदायी है। कॉन्फ़िगरेशन द्वारा उत्पन्न कुछ भी रेपो –
नोट: मैं ptomato के answer से सहमत हूं, और इस उत्तर को समुदाय विकी के रूप में छोड़ दें।
यह स्रोत कोड वितरण के लिए समझ में आता है, लेकिन आपकी परियोजना एक नहीं हो सकती है।
विकास के उद्देश्य के लिए, ptomato का जवाब अधिक समझ में आता है।
सभी सी परियोजनाओं आम तौर पर एक कॉन्फ़िगर फ़ाइल वास्तविक संकलन के लिए इस्तेमाल किया Makefile उत्पन्न करने में सक्षम के साथ आता है।
तो जब आप ऑटोोटूल श्रृंखला पर विचार करते हैं, तो मैं कॉन्फ़िगरेशन फ़ाइल तक जेनरेट की गई सभी फ़ाइलों को संस्करणित करने की अनुशंसा करता हूं, क्योंकि वे आम तौर पर एक बार पीढ़ी के ऑपरेशन होते हैं।
का मतलब है अपने संस्करण परियोजना का एक चेक आउट प्रति के साथ किसी को भी तुरंत शुरू यही कारण है कि कर सकते हैं:
./configure
make
make install
तो, जबकि यह आम तौर पर सच आप संस्करण किसी न उत्पन्न चाहिए फ़ाइलें, आप कर सकते थे है उन लोगों को संग्रहीत किया गया है, खासकर यदि उस प्रोजेक्ट से अन्य पाठक:
- उन फ़ाइलों को पुन: उत्पन्न करने से लाभ नहीं है (एक समान परिणाम के लिए)
- कॉन्फ़िगर और संकलित करने के लिए तत्काल प्रारंभ करें।
में हो सकता है, मुझे लगता है कि आप इस बात से उलझन में हैं कि स्रोत कोड वितरण क्या है - प्रत्येक प्रोजेक्ट में एक है, लेकिन यह संस्करण नियंत्रण में जो भी रखा जाता है, वही नहीं है। स्रोत कोड वितरण में उन फ़ाइलों को शामिल करना चाहिए जो _users_ को प्रोजेक्ट बनाने की आवश्यकता है; संस्करण नियंत्रण में उन फ़ाइलों को शामिल करना चाहिए जो _developers_ को प्रोजेक्ट बनाने की आवश्यकता है। – ptomato
@ptomato: फिर से, मैं सहमत हूं। बात यह है कि, मैं इन दिनों स्रोत कोड वितरण प्रोजेक्ट को पुन: संकलित करता हूं (लेकिन मैं उन्हें विकसित नहीं करता)। इसलिए वीसीएस में क्या हो सकता है इसकी मेरी "तिरछी" दृष्टि। – VonC
- 1. वर्जन कंट्रोल
- 2. आप अपने वर्जन कंट्रोल रिपोजिटरी को कैसे व्यवस्थित करते हैं?
- 3. क्या मुझे सबवर्जन से परे वर्जन कंट्रोल सिस्टम देखना चाहिए?
- 4. विजुअल स्टूडियो द्वारा जेनरेट की गई फाइलों को मुझे क्या करना चाहिए?
- 5. मेवेन: प्रोजेक्ट वर्जन कंट्रोल
- 6. विम, लाटेक्स, वर्ड-रैपिंग, और वर्जन कंट्रोल
- 7. क्या मुझे NSLocalizedString() द्वारा लौटाई गई तारों को सहेजना चाहिए?
- 8. मैं स्लिक द्वारा जेनरेट की गई डीडीएल कैसे मुद्रित करूं?
- 9. मशीनों में सिंक की गई डॉट फाइलों को रखना?
- 10. मैं PhantomJS द्वारा प्राप्त पृष्ठ में जेनरेट की गई जावास्क्रिप्ट त्रुटियों को कैप्चर कैसे करूं?
- 11. Autotools
- 12. मुझे क्या रिशेर्पर फाइलें रखना चाहिए और स्रोत नियंत्रण में मुझे किन फ़ाइलों को अनदेखा करना चाहिए?
- 13. क्या Google Analytics को Doxygen जेनरेट की गई फ़ाइलों में जोड़ना संभव है?
- 14. मर्ज/डिफ टूल जो वर्जन कंट्रोल
- 15. jQuery टेम्पलेट्स - मुझे उन्हें कहां रखना चाहिए?
- 16. मुझे खाली बेस क्लास कहां रखना चाहिए?
- 17. Findbugs जेनरेट की गई फाइलों को बहिष्कृत करें
- 18. MEF: मुझे कंपोज़िशनकंटर कहां रखना चाहिए?
- 19. मुझे अपने जुनीट परीक्षण कहां रखना चाहिए?
- 20. क्या मुझे खराब नामकरण सम्मेलन रखना चाहिए?
- 21. मुझे अपना जावास्क्रिप्ट कोड कहां रखना चाहिए?
- 22. मुझे कॉल को कहां रखना चाहिए [FBSettings publInstall: appId]
- 23. फॉर्मिडेबल द्वारा पार्स की गई फ़ाइलों का नाम कैसे बदलें?
- 24. appassembler maven प्लगइन जेनरेट की गई स्क्रिप्ट
- 25. सी # क्या मुझे कनेक्शन पूलिंग में खुले कनेक्शन रखना चाहिए
- 26. रिमोट रिपोजिटरी में फ़ाइलों को कैसे हटाएं?
- 27. Autotools की जॉय कैसे सीखें?
- 28. Qmake को स्वत: जेनरेट की गई संसाधन फ़ाइलों को कैसे निर्दिष्ट करें?
- 29. आईडीएल जेनरेट की गई हेडर फ़ाइल
- 30. क्या मुझे अपना AdMob प्रकाशक आईडी गुप्त रखना चाहिए?
मैं सहमत हूं। +1 (और मेरा उत्तर सामुदायिक विकी के रूप में रखें) – VonC
यदि आप m4 निर्देशिका में कोई कस्टम मैक्रोज़ जोड़ते हैं तो उन्हें भी जोड़ा जाना चाहिए। – ext
उत्तर और सुझावों के लिए धन्यवाद :) हालांकि मैं चाहता था कि मेरी परियोजना सीधे इंस्टॉल करने योग्य प्रारूप में हो, लेकिन मुझे विश्वास है कि autogen.sh जैसी स्क्रिप्ट बनाना एक बेहतर विकल्प है। –