2009-10-28 16 views
5

मैंने यहां कुछ जवाब पढ़े हैं जो svn: externals के उपयोग की निंदा करते हैं। मैं देखता हूं कि उनका दुरुपयोग कैसे किया जा सकता है, और यह हमें सबवर्जन पर अधिक निर्भर करता है, लेकिन मुझे वास्तव में हमारे समूह को कभी भी इससे दूर नहीं जाना चाहिए।एसवीएन बाहरी ... हाँ या नहीं?

वैसे भी, यहां मेरी दुविधा है। हमारे पास ऐसे समाधान हैं जो कई परियोजनाओं का संदर्भ देते हैं जो भंडार के अपने स्वयं के खंड में हैं। इनमें से कई परियोजनाएं कई समाधानों के बीच साझा की जाती हैं, और हम भी हमारी परियोजनाओं के साझाकरण को रोकना नहीं चाहते हैं। हमारे पास हमारे भंडार (इकाई परीक्षण ढांचे, पुस्तकालयों, आदि) में कई निश्चित संस्करण निर्भरताएं भी जांच की गई हैं।

मैं कई 'कार्यस्थानों' है कि केवल बाहरी उपयोग करें कॉन्फ़िगर करने के लिए चाहते हैं (जहाँ तक सबवर्सन का सवाल है वे सिर्फ खाली निर्देशिका हो सकता है, या हो सकता है एक भी समाधान फ़ाइल में) हमारे डेवलपर्स के लिए समाधान कॉन्फ़िगर करने के लिए। अधिकांश परियोजनाओं को जांचना उनके लिए पर्याप्त नहीं होगा, लेकिन इसके कार्यक्षेत्र की जांच करना पर्याप्त होगा क्योंकि इसकी सभी निर्भरताएं इसके साथ आ जाएंगी। क्या किसी और ने एक समान समाधान लागू किया है, और svn होगा: बाहरी इस बारे में जाने का एक अच्छा तरीका है? यदि हम इस सड़क पर जाते हैं तो आपके लिए सावधानी के क्या शब्द हैं?

मूल रूप से संरचना इस (ट्रंक/शाखाओं/संक्षिप्तता के लिए छोड़े गए टैग) दिखाई देगा:

/projects 
    /project1 
    /project2 
/dependencies 
    /xUnit 
     /1.5 
     /1.4 
    /NHibernate 
     /2.1.0 
     /2.0.1 
/workspaces 
    /project1 
     /project1 (external to ^/projects/project1) 
     /xUnit (external to ^/dependencies/xUnit/1.5) 
     /NHibernate (external to ^/dependencies/NHibernate/2.0.1) 
    /project2 
     /project2 (external to ^/projects/project2) 
     /xUnit (external to ^/dependencies/xUnit/1.4) 
     /NHibernate (external to ^/dependencies/NHibernate/2.1.0) 

उत्तर

8

SVN Externals are Evil; Use Piston or Braid विरोधी बाहरी शिविर के विशिष्ट लगता है। और पोस्टर के पास एक बिंदु है।

मैं एक बेहतर मापदंड लगता है:

  • आंतरिक परियोजनाओं है कि आप बदल सकते हैं के लिए बाहरी संदर्भ का उपयोग करें; और
  • बाहरी भंडारों के लिए vendor branches का उपयोग करें जिन पर आपका कोई नियंत्रण नहीं है।

तो ऐसा लगता है कि एसवीएन बाहरी लोगों के साथ समस्याएं लोगों द्वारा विक्रेताओं की शाखाओं के विकल्प के रूप में उपयोग की जाती हैं। मैंने कई लोगों को तीसरे पक्ष के रेल प्लगइन के संदर्भ में उनके बारे में शिकायत की है।

तो आपके मामले में, मानते हैं कि ये परियोजनाएं सभी "आंतरिक" हैं, तो मुझे लगता है कि एक एसवीएन बाहरी एक पूरी तरह से मान्य दृष्टिकोण है।

+2

नोट करें कि उस ब्लॉग पोस्ट के लिंक को स्थानांतरित कर दिया गया है।यह अब यहां है: http://cobaltedge.com/svn-externals-are-evil-use-piston-or-braid – chrisrbailey

4

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

मैं बिल्कुल समझ में नहीं आया कि क्यों कार्यक्षेत्र कि पूरी तरह से बाहरी पर और परियोजना पर सीधे बाहरी नहीं जोड़ने आधारित है का उपयोग करना चाहते। मेरा दृष्टिकोण यह है कि जब आप चेक आउट हो जाते हैं तो एसवीएन पर आपके द्वारा बनाई गई कोई भी परियोजना "अंतर्निर्मित" होनी चाहिए।

मेरे दृष्टिकोण में अपने भंडार होना चाहिए इस तरह दिखता है:

/dependencies 
    /xUnit 
      /tags 
       /1.5 
       /1.6 
      /trunk 
    /NHibernate 
      /tags 
       /2.1.0 
       /2.0.1 
      /trunk 
/projects 
    /project1 
      /tags 
       /1.0 
        /sources 
        /xUnit(externals to /dependencies/xUnit/tags/1.5) 
        /NHibernate(externals to /dependencies/NHibernate/tags/2.0.1) 
      /trunk 
       /sources 
       /xUnit(externals to /dependencies/xUnit/tags/1.6) 
       /NHibernate(externals to /dependencies/NHibernate/tags/2.0.1) 
    /project2 
      /tags 
       /1.0 
        /sources 
        /xUnit(externals to /dependencies/xUnit/tags/1.6) 
        /NHibernate(externals to /dependencies/NHibernate/tags/2.0.1) 
      /trunk 
       /sources 
       /xUnit(externals to /dependencies/xUnit/tags/1.6) 
       /NHibernate(externals to /dependencies/NHibernate/tags/2.1.0) 
0

यदि आपका svn:externals केवल संदर्भ 3 पार्टी पुस्तकालयों, क्यों बस एक Maven/आइवी भंडार का उपयोग नहीं? इन जावा दुनिया के लिए कर रहे हैं और मैं उनके नेट pendents पता नहीं है, लेकिन मैं काफी यकीन है कि वे मौजूद हूँ।

मैं केवल चींटी antlib फ़ाइलों को साझा करने svn:externals का उपयोग करें, जब तक वे उन्हें एक जार संग्रह से लोड करने के लिए संभावना दे।

संबंधित मुद्दे