svn रथम विभिन्न कार्यक्रमों में विकसित पुस्तकालयों के लिए सबवर्जन रिपोजिटरी लेआउट




स्कूल लाइब्रेरी (2)

खैर, मुझे लगता है कि मैं इस बात से असहमत हूं कि बाहरी सवाल से बाहर हैं मेरे पास अतीत में ऐसी ही समस्या है मैंने इसे svn संपत्ति एक्सटर्नल का उपयोग करके हल किया।

अपनी लाइब्रेरी रिपॉजिटरी बनाएं:

svnadmin create /path/library1
svnadmin create /path/library2
...

क्लाइंट रिपॉजिटरी बनाएं:

svnadmin create /path/program1
svnadmin create /path/program2
...

अब प्रोग्राम रिपॉजिटरी के भीतर पुस्तकालयों को बाहरी रूप में घोषित करें:

cd /path/program1
svn propset svn:externals "library1 svnpath://wherever/library1/trunk/" .
svn propset svn:externals "library2 svnpath://wherever2/library2/trunk/" .

अब तो आप प्रोग्राम 1 और 2 में बदलाव कर सकते हैं और उन परियोजनाओं की जड़ में कमी कर पुस्तकालयों को प्रभावित नहीं कर सकते हैं ... लेकिन, अगर आपको पुस्तकालयों में बदलाव करने की आवश्यकता हो तो आप कर सकते हैं तब अगर और केवल अगर आपके पास लायब्रेरी रिपॉजिटरी के लिए लिखने की अनुमति है तो आप उन परिवर्तनों को भी कर सकते हैं - लेकिन केवल पुस्तकालय की उपनिर्देशिका से

Ie यह पुस्तकालयों के लिए प्रतिबद्ध नहीं है ...

... make a change in /path/program1/library1 ... 
cd /path/program1
svn commit -m "some change"

यह उपरोक्त लाइब्रेरी में किए गए परिवर्तन को कम करता है:

cd /path/program1/library1
svn commit -m "change to library code"

मैं कई (बल्कि छोटे) कार्यक्रमों के लिए ज़िम्मेदार हूं, जो विभिन्न पुस्तकालयों द्वारा बहुत सारे कोड साझा करता है I मैं सोच रहा हूं कि विभिन्न प्रोग्रैम (और पुस्तकालयों) को विकसित करने के लिए सबसे अच्छा भंडार वाला लेआउट क्या है, और सभी कार्यक्रमों में पुस्तकालयों को सिंक में रखना है

तर्क के लिए हमें दो कार्यक्रमों के साथ दो कार्यक्रम हैं:

  • Program1
    • Library1
    • Library2
  • Program2
    • Library1
    • Library2

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

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

मैं इस की तर्ज पर कुछ सोच रहा था:

  • पुस्तकालय
    • लाइब्रेरी 1 (पूर्वजों)
    • लाइब्रेरी 2 (पूर्वज)
  • Program1
    • प्रोग्राम 1 कोड
    • लाइब्रेरी 1 (विक्रेता शाखा)
    • लाइब्रेरी 2 (विक्रेता शाखा)
  • ...

तब कहें जब प्रोग्राम 1 के विकास में कुछ परिवर्तन लाइब्रेरी 2 के लिए किए जाते हैं, मैं उन्हें फिर से रिपॉजिटरी के पुस्तकालय भाग में मिला दिया जाता है, और वांछित होने पर उन्हें अन्य सभी कार्यक्रमों में मिला दिया जाता है।

अन्य कार्यक्रमों में मर्ज करना हमेशा तुरंत नहीं हो सकता है, जो लोग प्रोग्राम 2 पर काम कर रहे हैं, वे एक रिलीज के करीब हो सकते हैं और पहले इसे पूरा कर सकते हैं, एक टैग बना सकते हैं और केवल तब ही सभी पुस्तकालयों को अपडेट कर सकते हैं।

मैं थोड़ा सा चिंतित हूं कि कुछ समय बाद कई मर्ज और रखरखाव सिरदर्द होने का परिणाम होगा, लेकिन मुझे वाकई बेहतर समाधान नहीं मिल रहा है

फिर से, यह मेरे लिए एक आम उपयोग का मामला लगता है, इसलिए मैंने सोचा कि मैं सिर्फ स्टैकवॉवरफ्लू समुदाय से पूछता हूं, यह हासिल करने के लिए सबसे अच्छा भंडार वाला लेआउट क्या है?


कार्यक्रम के पेड़ में पुस्तकालय के स्रोत का अस्तित्व क्यों है? अपने पुस्तकालयों को अलग से संकलित करें और उन्हें अपने कार्यक्रमों में लिंक करें।







repository