2011-02-02 8 views
5

मुझे पता है, यह एक मूर्ख सवाल होना चाहिए। मान लें कि मेरे पास ऑटोटूल बिल्ड सिस्टम का उपयोग करके लाइब्रेरी है। मेरे पास configure, configure.ac, Makefile.am, config.h और मेरे प्रोजेक्ट रूट फ़ोल्डर में अन्य फ़ाइलें हो सकती हैं। उनमें से कुछ डेवलपर द्वारा लिखे गए थे, अन्य ऑटोटूल द्वारा उत्पन्न होते हैं।ऑटोोटूल और संस्करण नियंत्रण

सवाल यह है कि: यदि मैं एक संस्करण नियंत्रण प्रणाली (मेरे मामले में - एचजी) का उपयोग करता हूं - जो सभी ऑटोोटूल फ़ाइलों को वीसीएस द्वारा ट्रैक किया जाना चाहिए और जो (hgignore'd) नहीं होना चाहिए?

धन्यवाद, सर्ज

+0

संभव डुप्लिकेट [ऑटोटूल द्वारा उत्पन्न की गई फाइलों को मुझे गिट रिपॉजिटरी में रखना चाहिए?] (Http://stackoverflow.com/questions/3290908/which-files-generated-by-autotools-should-i-keep-in -गिट-रिपोजिटरी) – ptomato

उत्तर

10

मुझे लगता है कि सबसे अच्छी प्रक्रिया केवल उन संस्करणों के नियंत्रण में है जो उत्पन्न नहीं हैं - वीसीएस के साथ काम करने वाले लोग डेवलपर्स हैं और उनकी मशीनों पर ऑटोटूल स्थापित होना चाहिए, जेनरेट की गई फाइलों में जांच करने से केवल उनके लिए परेशानी होगी।

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

+0

ऐसा लगता है कि समस्या मेरे लिए हल हो गई है - मैंने रेपो को एक autogen.sh स्क्रिप्ट जोड़ा है। यह स्क्रिप्ट config.ac और Makefile.am से सभी autotools- संबंधित फ़ाइलों को दोबारा शुरू करती है। डेवलपर्स अब इस स्क्रिप्ट को चला सकते हैं और सॉफ्टवेयर का पुनर्निर्माण कर सकते हैं। अन्य उपयोगकर्ताओं के लिए एक मेकफ़ाइल लक्ष्य है - dist। यह स्रोतों के साथ एक टैरबॉल बनाता है और सभी ऑटोोटूल स्क्रिप्ट भी शामिल हैं। – zserge

+3

आपको वास्तव में autogen.sh की आवश्यकता नहीं है - autoreconf autotools के साथ स्थापित है और यह वास्तव में आपके लिए करता है। – Flexo

+2

यदि आप intltool जैसी चीजों का उपयोग करते हैं तो आपको इसकी आवश्यकता होती है जिसके लिए एक अलग सेटअप चरण की आवश्यकता होती है। – ptomato

4

इस पर दो विचारधारायें हैं:

  1. "मैं परियोजना देखना चाहता हूँ बिल्कुल के रूप में यह समय/संस्करण एक्स पर था" "मैं कर सकते हैं हमेशा बाद में उत्पन्न होने वाली किसी भी चीज को फिर से उत्पन्न करें "

मैं आम तौर पर बाद वाले समूह में व्यक्तिगत रूप से गिरता हूं, लेकिन पूर्व अच्छा हो सकता है अगर पूर्व अच्छा हो सकता है कुछ विशिष्ट संस्करणों में निर्माण प्रणाली के साथ समस्याएं हैं/जिन्हें आप शायद स्थापित नहीं किया है।

अपने उदाहरण configure में और config.h दोनों (शायद) ऑटोजनरेटेड, इसलिए यदि आप उन्हें संस्करण नियंत्रण में शामिल करने के लिए जा रहे हैं मैं शामिल करने के लिए Makefile.in भी एस इच्छुक होगी रहे हैं।

अपनी परियोजनाओं में यह आमतौर पर अधिक नहीं संबंधित फाइलों autotools होने का मतलब है configure.ac, Makefile.am, प्रलेखन अगर यह जीएनयू और जो किसी भी कस्टम/गैर मानक मैक्रो मेरी configure.ac आवश्यकता होती है एक निर्देशिका m4 कहा जाता है।

+0

मैं भी दूसरी तरफ पसंद करता हूं। इस मामले में लाइब्रेरी हमेशा मशीन पर रेपो से बनाई जाएगी, जिसमें ऑटोोटूल स्थापित हैं। इसलिए, मैं अपने रेपो में जितनी संभव हो उतनी छोटी ऑटोटूल-संबंधित फाइलें लेना चाहता हूं। – zserge

+1

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