5

मेरे पास वर्तमान में एक ही समाधान है जिसमें अब तक विकसित एक ही एप्लिकेशन और सभी गृहगणित पुस्तकालयों के लिए परियोजनाएं शामिल हैं। यह संपूर्ण समाधान एक गिट रेपो में भी रखा जाता है। अब मैं एक दूसरा एप्लीकेशन विकसित करने जा रहा हूं जो उन पुस्तकालयों का उपयोग करेगा। उस एप्लिकेशन के पहले और अलग संस्करणों की तुलना में अलग-अलग रिलीज चक्र होंगे। मेरे पास प्रश्न (या प्रश्न) है कि कोड सेट अप करने और गिट के संदर्भ में दोनों कोड को कैसे विभाजित किया जाए।एकाधिक ऐप्स के लिए एक .NET समाधान/गिट रेपो को विभाजित करना

  1. अनुप्रयोगों, एक साझा नेटवर्क ड्राइव करने के लिए तैनात किया गया है व्यक्तिगत कंप्यूटर के लिए नहीं है, इसलिए मैं जब वे तैनात किया गया है और क्या के साथ तैनात किया जाता है पर पूरा नियंत्रण है:

    कुछ अन्य उपयोगी जानकारी के जवाब के बारे में बात करने से पहले उन्हें

  2. लाइब्रेरी DLL को एक बार बनाए गए अनुप्रयोगों द्वारा साझा नहीं किया जाता है। प्रत्येक एप्लिकेशन में अपने फ़ोल्डर में सभी डीएलएल, पीडीबी और कॉन्फ़िगरेशन फाइलों की एक पूर्ण प्रति है।
  3. वर्तमान में, मैं रिलीज करने वाला एकमात्र व्यक्ति हूं, लेकिन एक या दो रिलीज करने में समाप्त हो सकता है, इसलिए मैं इसे ध्यान में रखना चाहता हूं।

मैं अपने सिर में कुछ विचारों के आसपास घूम रहा हूं, लेकिन उनमें से कोई भी संतोषजनक प्रतीत नहीं होता है। मैंने बस एक समाधान/एक गिट रेपो में सब कुछ रखने पर विचार किया है। मैंने submodules का उपयोग कर कई गिट repos में समाधान को विभाजित करने के बारे में भी सोचा है, लेकिन submodules बोझिल हैं। मैंने प्रत्येक एप्लिकेशन को अपने स्वयं के समाधान और सभी पुस्तकालयों को अभी तक एक और बनाने के बारे में भी सोचा है। सवाल यह है कि क्या मैं विजुअल स्टूडियो में कई समाधान खोल सकता हूं। पुस्तकालयों को अक्सर अनुप्रयोगों के साथ बदलने की जरूरत होती है, इसलिए अलग-अलग समाधानों में उन्हें बहुत अलग करना या गिट रेपो पुस्तकालयों और ऐप्स को सिंक में रखना मुश्किल बना रहा है। मेरे पास एक और चिंता है। अगर मैं समाधान को कई गिट रेपो में विभाजित करता हूं, तो मेरे पास प्रत्येक एप्लिकेशन के लिए शाखाएं हो सकती हैं, लेकिन यदि मैं एक गिट रेपो रखता हूं, तो मेरे पास केवल सबकुछ के लिए शाखाओं का एक सेट हो सकता है।

मैं अपने आप से सही प्रश्न भी नहीं पूछ सकता हूं, और यह भी संभव है कि मेरे पास एक साधारण समाधान हल करने से मुझे मानसिक ब्लॉक हो। किसी भी तरह से, मैं कुछ विचार देने के लिए एसओ समुदाय को रोकता हूं। मुझे उम्मीद है कि सबकुछ स्पष्ट है, लेकिन यदि नहीं, तो मुझे स्पष्टीकरण देने में खुशी होगी।

उत्तर

2

हालांकि वे बोझिल हो सकते हैं, मुझे लगता है कि submodules इस पर जाने का तरीका है।

mainapp 
\mainappdir 
    \somefiles 
    ... 
| 
| 
\library1 
| 
\library2 

उस मामले आप library1 और library2 submodules होना चाहेंगे में (जो शायद स्पष्ट है): मैं सिर्फ अपने निर्देशिका संरचना लगता जा रहा हूँ की तरह कुछ है। वे वास्तव में बुरा नहीं हैं, बस गिट IMHO में उपयोग करने के लिए कुछ।

विचार करने का एक और तरीका दोनों ऐप्स के उपयोग के लिए आपके फाइल सिस्टम पर लाइब्रेरी 1 और लाइब्रेरी 2 को प्रतीकात्मक रूप से लिंक करना होगा।उस स्थिति में, प्रत्येक पुस्तकालय यह स्वयं का रेपो हो सकता है लेकिन सबमिड्यूल के साथ प्रबंधित नहीं किया जाता है (मुझे लगता है कि आपको उन्हें अपनी .gitignore फ़ाइल में जोड़ना होगा)। प्रत्येक एप्लिकेशन में प्रतीकात्मक लिंक का उपयोग करके, रेपो/स्रोत प्रबंधन केवल दो लाइब्रेरी निर्देशिकाओं पर होगा। एक स्थान पर खींचने/शाखा बनाने से दोनों ऐप्स पर प्रभाव पड़ता है, प्रत्येक ऐप की लाइब्रेरी फाइलों को प्रशासित करने की आवश्यकता नहीं होती है।

+0

मुझे नहीं पता कि पुस्तकालयों को अलग-अलग रिपोज़ में रखना आवश्यक है या नहीं। मैं सभी पुस्तकालयों के लिए सिर्फ एक रेपो होने के ठीक हूँ। हालांकि, मैं आपकी आखिरी वाक्य से थोड़ी उलझन में हूं। – siride

+0

वह कह रहा है कि यदि आप पुस्तकालयों के प्रतीकात्मक लिंक का उपयोग करते हैं, तो आप उन्हें एक अलग समाधान में रख सकते हैं लेकिन दो ऐप समाधानों में पुस्तकालयों को परियोजना के रूप में संदर्भित कर सकते हैं। चूंकि प्रतीकात्मक लिंक सभी एक ही फाइल पर इंगित कर रहे हैं, इसलिए आप किसी भी ऐप के विकास के दौरान किए गए किसी भी बदलाव से दोनों ऐप्स प्रभावित होंगे। यह ऐसा करेगा जिससे आपको submodules की आवश्यकता नहीं है। –

+0

ऐसा लगता है कि यह सिर्फ एक गरीब व्यक्ति के submodules है और परियोजना पर काम कर रहे अन्य डेवलपर्स के लिए अनुकूल नहीं है। मुझे लगता है कि मुझे एक तरह से या दूसरे के साथ submodules के साथ जाना होगा। – siride

0

मैं सब कुछ अलग समाधानों में विभाजित कर दूंगा, विशेष रूप से पुस्तकालय जो कई अनुप्रयोगों में उपयोग किए जाएंगे। जैसा कि आपने बताया है, विभिन्न अनुप्रयोगों और पुस्तकालयों में अलग-अलग रिलीज चक्र होते हैं और अलग-अलग विकसित किए जा सकते हैं। तर्कसंगत इकाइयों में उन्हें विभाजित करने और यह सुनिश्चित करने के लिए कि पुस्तकालय उन अनुप्रयोगों से स्वतंत्र हैं जिनका उपयोग किया जाएगा।

गिट में क्या करना है, इसके लिए प्रत्येक लॉजिकल के लिए अलग-अलग भंडार होना चाहिए काम की इकाई (आवेदन या पुस्तकालय), या कम से कम, एक ही भंडार के भीतर अलग शाखाएं।

शुभकामनाएँ और निराश न हों। यह लंबे समय तक आपके लिए फायदेमंद होगा।