2008-10-14 11 views
11

पर डेल्फी डिज़ाइनटाइम पैकेज लोड हो रहा है क्या प्रोजेक्ट बेस पर डिज़ाइनटाइम पैकेज चुनने का कोई तरीका है?प्रोजेक्ट बेस

निर्माण समय को स्वीकार्य रखने के लिए पैकेज बड़ी परियोजना में बहुत उपयोगी हैं, लेकिन वे उन बड़ी परियोजनाओं में भी असली पिटा हैं। जब एक डेवलपर एक नया पैकेज जोड़ता है, तो यह तब तक अन्य सभी के लिए निर्माण करने के लिए टूट जाता है जब तक कि वे अपनी मशीन पर नया पैकेज इंस्टॉल नहीं करते। और फिर संकुल का संस्करण है ...

तो क्या किसी के लिए इसका कोई उचित समाधान है? (यह अब मुझे वर्षों से परेशान कर रहा है)

उत्तर

8

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

  • सबवर्सन रेपो:

    मूल रूप से यह इस तरह से काम किया। रेपो में प्रत्येक पैकेज फ़ोल्डर में एक ही उपफोल्डर थे: लिब (डीसीयू के लिए), स्रोत, सहायता (यदि आवश्यक हो)

  • रेपो के रूट फ़ोल्डर में एक XML फ़ाइल के साथ टूल को एक साथ बैठता है।
  • एक्सएमएल फ़ाइल प्रत्येक पैकेज के लिए सभी आवश्यक जानकारी निर्दिष्ट करती है: कौन सा फ़ोल्डर डीसीयू होता है, जिसमें फ़ोल्डर में स्रोत होता है, जिसे कमांड मदद के लिए चलाने की आवश्यकता होती है।
  • उपकरण XML में पढ़ता है और सभी उपलब्ध संकुलों का एक चेकलिस्टबॉक्स प्रदर्शित करता है। स्थापित संकुल (बीडीएस रजिस्ट्री से पढ़ें) चिह्नित चिह्नित हैं।
  • उपयोगकर्ता स्थापित करने/अनइंस्टॉल करने के लिए कौन से पैकेज का चयन कर सकता है।
  • उपकरण बीडीएस रजिस्ट्री में आवश्यक कुंजी जोड़ता/हटाता है। यह डीसीयू/लीब फ़ोल्डर को आईडीई के खोज पथ में जोड़ता है, यह स्रोत फ़ोल्डर को आईडीई ब्राउज़िंग पथ में जोड़ता है, और यह कस्टम आईडीई विशेषज्ञ के साथ सहायता कमांड को पंजीकृत करता है (यह विशेषज्ञ लॉन्च करने के लिए डिफ़ॉल्ट सहायता मेनू में एक एक्सटेंशन प्रदान करता है सभी स्थापित संकुलों के लिए सहायता)
  • उपकरण पैकेज के बीच संघर्ष और निर्भरताओं की भी जांच करेगा। उदाहरण के लिए राइज घटक के संस्करण 3 और 4 दोनों उपलब्ध थे जो दोनों एक ही समय में सक्रिय नहीं हो सके।निर्भरता जाँच घर में घटक है कि TurboPower AsyncPro से व्युत्पन्न (घर में घटकों के बहुत AsyncPro के माध्यम से धारावाहिक संचार पर भरोसा) के लिए उपयोगी था

एक संभावित विस्तार बचाने/के चयन को लोड करने में सक्षम होना हो गया होता संकुल और स्टोर जो प्रत्येक प्रोजेक्ट के साथ चयन करते हैं ताकि आपके पास केवल एक पैकेज को लोड किया जा सके जो किसी विशेष प्रोजेक्ट के लिए आवश्यक हो।

मैंने यह सब लागू किया जब कंपनी डेल्फी 5/7 से डेल्फी 2007 तक जा रही थी। हमें पहले पैकेजिंग संस्करण के साथ बहुत सारी समस्याएं थीं और सभी अलग-अलग पैकेजों के संस्करण के लिए कुछ रास्ता चाहते थे।

यह दृष्टिकोण कुछ अच्छा लाभ की पेशकश की:

  • जब bugfixes या किए जाने के लिए तीसरे पक्ष के संकुल के नए संस्करण जारी किए गए थे, एक व्यक्ति तोड़फोड़ करने के लिए परिवर्तन करने के लिए था। अन्य सभी देव सिर्फ उपversण से अद्यतन कर सकते हैं और बिना किसी समस्या के नवीनतम संस्करण प्राप्त कर सकते हैं।
  • जब नए घटक पैकेज पर्यावरण में जोड़े जाएंगे, तो एक व्यक्ति को सभी फाइलें करनी होंगी, एक्सएमएल पैकेज सूची बदलनी होगी और फिर अन्य देव एक सबवर्सन अपडेट कर सकते हैं और आसानी से पैकेज को एकीकृत करने के लिए टूल चला सकते हैं।
  • सभी तृतीय-पक्ष और कस्टम इन-हाउस घटकों को अब आसानी से संस्करणित किया गया था।
  • उपवर्तन रेपो में डीसीयू (और अन्य बाइनरी) सहित, हमने यह सुनिश्चित किया कि सभी देवों ने एक ही संकलित संस्करण का उपयोग किया। इससे पहले कि यह संभव था कि विभिन्न संकलनों ने विभिन्न सेटिंग्स का उपयोग किया जिससे कुछ घटकों को अलग-अलग व्यवहार करना पड़ा।
  • जब सभी अन्य देवताओं ने आखिरकार डेल्फी 2007 स्थापित किया, तो उनके पैकेज 10 मिनट से भी कम समय में स्थापित किए गए थे (अधिकांश समय सबवर्सन रेपो से सबकुछ डाउनलोड करने में व्यतीत होता था; टूल स्वयं ही 2 सेकंड से कम समय में 20 पैकेज इंस्टॉल कर सकता था)। इससे पहले, डेल्फी 5/7 के लिए सभी पैकेजों की मैन्युअल स्थापना के साथ सबकुछ इंस्टॉल करने में 2 दिन तक लग सकते हैं।

यह सिर्फ अकेले कुछ घर में घटकों के लिए इस्तेमाल नहीं किया गया था, रेपो भी बड़ा घटक संकुल में से कुछ में शामिल हैं: Raize घटक, JCL/JVCL DevExpress क्वांटम (उपकरण के बजाय उनके संस्थापक का उपयोग करते हुए, हालांकि), ग्रिड 3 और 4, टर्बोपावर असिंकप्रो

+0

यह बहुत उपयोगी लगता है! कृपया इसे उपलब्ध कराएं। । । –

+0

हाँ, मुझे इसे उपलब्ध करना अच्छा लगेगा। लेकिन मुझे इसे स्क्रैच से फिर से बनाना होगा (इतना मजेदार नहीं है और मुझे मूल से ज्यादा बगफिक्स याद आते हैं) या मेरे पिछले नियोक्ता को इसे खोलने के लिए प्राप्त करें। हालांकि उनसे बात करने के लिए एक शॉट के लायक, मेरे पास अभी भी अच्छे संपर्क हैं। – Otherside

+0

यह मेरे मन में जो कुछ है, उसके बहुत करीब है। मैं उम्मीद कर रहा था कि ऐसा कुछ पहले से ही अस्तित्व में था। मुझे उम्मीद है कि आप इस पर काम करने के लिए कुछ अतिरिक्त समय पा सकते हैं, क्योंकि यह उन विचारों में से एक है जो डेवलपर्स को अन्य वातावरण में मजबूर करता है। धन्यवाद। – Glenner003

6

यह भी आसान नहीं है। आप इसे कर सकते हैं, हालांकि, एक कस्टम रजिस्ट्री हैक के उपयोग के साथ, और एक विशिष्ट बीडीएस विन्यास प्रति शॉर्टकट आप कर रहे हैं में रुचि:

उपयोग करने के लिए, बस एक नया शॉर्टकट बना सकते हैं और उदा पारित करने के लिए आदेश पंक्ति को संशोधित -rMyAlternateBDSReg। फिर एक बार लॉन्च करने के बाद, reg प्रविष्टि बनाई गई है और वे वैकल्पिक रजिस्ट्री को कॉन्फ़िगर कर सकते हैं, संकुल को हटाकर, डिफ़ॉल्ट इंस्टॉल को गड़बड़ करने के बारे में चिंता करने के लिए।

codegear

से आप प्रत्येक परियोजना के लिए एक विन्यास की स्थापना की है, तो आप को देखते हुए परियोजना के लिए उपयुक्त शॉर्टकट शुरू कर सकते हैं। यह स्वचालित नहीं है, लेकिन यह हर समय सबकुछ रखने से बेहतर है।

एक अच्छा साइड इफेक्ट यह है कि भार के समय में सुधार होगा।

0

हमने स्रोतों को हमारे नियंत्रण के लिए स्रोत बैचफाइल के साथ स्रोत बनाया है जो उन्हें पुनर्निर्माण करता है। यदि पैकेज के लिए पेड़ में कोई बदलाव है तो हम उन्हें पुनर्निर्माण करते हैं। यह नए पैकेजों को स्थापित करने का समाधान नहीं करता है, लेकिन रजिस्ट्री हिट हैं जो इसकी देखभाल कर सकती हैं, इसलिए यह संभव है कि हम इसे प्रबंधित करने के लिए .reg स्निपेट्स को शामिल कर सकें।