आप अपने संस्करण नियंत्रण भंडार को कैसे व्यवस्थित करते हैं?


108

सबसे पहले, मुझे इस बारे में पता है: आप घर सॉफ्टवेयर परियोजनाओं के लिए एक तोड़फोड़ भंडार कैसे व्यवस्थित करेंगे? अगला, वास्तविक सवाल: मेरी टीम हमारी रिपॉजिटरी का पुनर्गठन कर रही है और मैं इसे कैसे व्यवस्थित करना है, इस बारे में संकेत तलाश रहा हूं। (इस मामले में एसवीएन)। यहाँ हम साथ आए हैं। हमारे पास एक रिपॉजिटरी, कई प्रोजेक्ट और कई svn: एक्सटर्नल क्रॉस-रेफरेंस हैं

\commonTools /*tools used in all projects. Referenced in each project with svn:externals*/
   \NUnit.v2.4.8
   \NCover.v.1.5.8
   \<other similar tools>
\commonFiles /*settings strong name keys etc.*/
   \ReSharper.settings
   \VisualStudio.settings
\trash /*each member of the team has trash for samples, experiments etc*/
   \user1
   \user2
\projects
   \Solution1 /*Single actual project (Visual Studio Solution)*/
      \trunk
         \src
             \Project1 /*Each sub-project resulting in single .dll or .exe*/
             \Project2
         \lib
         \tools
         \tests
         \Solution1.sln
      \tags
      \branches
   \Solution2
      \trunk
         \src
             \Project3 /*Each sub-project resulting in single .dll or .exe*/
             \Project1 /*Project1 from Solution1 references with svn:externals*/
         \lib
         \tools
         \tests
         \Solution2.sln
      \tags
      \branches

शब्दावली को साफ़ करने के लिए: समाधान का मतलब एकल उत्पाद है, प्रोजेक्ट एक विज़ुअल स्टूडियो प्रोजेक्ट है (जिसके परिणामस्वरूप एकल। Dll या। Exe) होता है।

यही कारण है कि हम रिपॉजिटरी को बिछाने की योजना बना रहे हैं। मुख्य मुद्दा यह है कि हमारे पास कई समाधान हैं, लेकिन हम समाधान के बीच परियोजनाओं को साझा करना चाहते हैं। हमने सोचा कि उन साझा परियोजनाओं को अपने स्वयं के समाधानों में स्थानांतरित करने का वास्तव में कोई मतलब नहीं है, और इसके बजाय हमने समाधानों के बीच परियोजनाओं को साझा करने के लिए svn: externals का उपयोग करने का निर्णय लिया। हम रिपॉजिटरी में एक ही जगह पर उपकरण और 3 पार्टी लाइब्रेरी के सामान्य सेट को रखना चाहते हैं, और उन्हें प्रत्येक समाधान में svn: externals के साथ संदर्भित करते हैं।

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


क्या आप सुनिश्चित हैं कि आपका मतलब "थ्रैश" है? या बल्कि "कचरा"?
ssc

जवाबों:


92

यदि आप नीचे मेरी सिफारिशों का पालन करते हैं (मेरे पास वर्षों के लिए है), तो आप कर पाएंगे:

- प्रत्येक परियोजना को स्रोत नियंत्रण में कहीं भी रख दें, जब तक आप प्रोजेक्ट रूट डायरेक्टरी से नीचे की ओर संरचना को संरक्षित नहीं करते हैं

- न्यूनतम जोखिम और न्यूनतम तैयारी के साथ, किसी भी मशीन पर कहीं भी प्रत्येक परियोजना का निर्माण करें

- जब तक आप इसकी बाइनरी निर्भरता (स्थानीय "पुस्तकालय" और "आउटपुट" निर्देशिकाओं तक पहुंच) तक प्रत्येक प्रोजेक्ट को पूरी तरह से अकेले खड़े करें;

- निर्माण और परियोजनाओं के किसी भी संयोजन के साथ काम करते हैं, क्योंकि वे स्वतंत्र हैं

- निर्माण और एक ही परियोजना के कई प्रतियों / संस्करणों के साथ काम करते हैं, क्योंकि वे स्वतंत्र हैं

- उत्पन्न फ़ाइलों या पुस्तकालयों के साथ अपने स्रोत नियंत्रण भंडार को अव्यवस्थित करने से बचें

मैं सलाह देता हूं (यहां गोमांस है):

  1. एकल प्राथमिक सुपुर्दगी, जैसे .DLL, .EXE, या .JAR (विज़ुअल स्टूडियो के साथ डिफ़ॉल्ट) का निर्माण करने के लिए प्रत्येक प्रोजेक्ट को परिभाषित करें।

  2. एक जड़ के साथ एक पेड़ के रूप में प्रत्येक परियोजना की संरचना।

  3. अपनी रूट डायरेक्टरी में प्रत्येक प्रोजेक्ट के लिए एक स्वचालित बिल्ड स्क्रिप्ट बनाएं जो इसे IDE पर NO निर्भरता के साथ, खरोंच से बनाएगी (लेकिन संभव होने पर IDE में निर्मित होने से नहीं रोकती)।

  4. विंडोज पर .NET प्रॉजेक्ट्स के लिए nAnt पर विचार करें, या आपके ओएस, टारगेट प्लेटफॉर्म आदि के आधार पर कुछ इसी तरह का।

  5. हर प्रोजेक्ट को स्क्रिप्ट के संदर्भ में अपनी बाहरी (3-पार्टी) निर्भरता को एक एकल स्थानीय साझा "लाइब्रेरी" निर्देशिका से बनाएं, हर ऐसे बाइनरी पूरी तरह से संस्करण द्वारा पहचाना जाता है: %DirLibraryRoot%\ComponentA-1.2.3.4.dll, %DirLibraryRoot%\ComponentB-5.6.7.8.dll

  6. प्रत्येक प्रोजेक्ट बिल्ड स्क्रिप्ट को एक स्थानीय साझा "आउटपुट" निर्देशिका में प्राथमिक सुपुर्दगी को प्रकाशित करें: %DirOutputRoot%\ProjectA-9.10.11.12.dll, %DirOutputRoot%\ProjectB-13.14.15.16.exe

  7. हर प्रोजेक्ट का निर्माण स्क्रिप्ट के संदर्भ में "लाइब्रेरी" और "आउटपुट" डायरेक्टरीज़ और "पूरी तरह से पूर्ण पथ (ऊपर देखें)" के माध्यम से निर्भरता को दर्शाता है।

  8. कभी भी किसी परियोजना को किसी अन्य परियोजना या उसकी किसी भी सामग्री का संदर्भ न दें - केवल "आउटपुट" निर्देशिका में प्राथमिक डिलिवरेबल्स के संदर्भ की अनुमति दें (ऊपर देखें)।

  9. हर प्रोजेक्ट को स्क्रिप्ट के संदर्भ में इसके आवश्यक बिल्ड टूल्स को एक विन्यास योग्य और पूर्ण-संस्करण वाले पूर्ण पथ द्वारा बनाएं: %DirToolRoot%\ToolA\1.2.3.4, %DirToolRoot%\ToolB\5.6.7.8

  10. प्रोजेक्ट रूट डायरेक्टरी के सापेक्ष निरपेक्ष पथ द्वारा प्रत्येक प्रोजेक्ट बिल्ड स्क्रिप्ट संदर्भ स्रोत सामग्री बनाएं: ( ${project.base.dir}/src, ${project.base.dir}/tstबिल्ड टूल द्वारा सिंटैक्स भिन्न होता है)।

  11. ALWAYS को एक प्रोजेक्ट बिल्ड स्क्रिप्ट की आवश्यकता होती है जो किसी फ़ाइल या निर्देशिका को एक निरपेक्ष, विन्यास योग्य पथ (एक विन्यास योग्य चर द्वारा निर्दिष्ट निर्देशिका में निहित) के माध्यम से संदर्भित करने के लिए: ${project.base.dir}/some/dirsया ${env.Variable}/other/dir

  12. कभी भी किसी प्रोजेक्ट को स्क्रिप्ट बनाने की अनुमति दें जैसे कि किसी रिश्तेदार पथ के साथ कुछ भी संदर्भित करने के लिए .\some\dirs\hereया ..\some\more\dirs, हमेशा पूर्ण पथ का उपयोग करें।

  13. कभी भी किसी प्रोजेक्ट को स्क्रिप्ट का निर्माण करने की अनुमति दें ताकि किसी ऐसे पथ का उपयोग किया जा सके, जिसके पास एक विन्यास योग्य रूट डायरेक्टरी न हो, जैसे C:\some\dirs\hereया \\server\share\more\stuff\there

  14. प्रोजेक्ट बिल्ड स्क्रिप्ट द्वारा संदर्भित प्रत्येक कॉन्फ़िगर करने योग्य रूट निर्देशिका के लिए, उन संदर्भों के लिए उपयोग किए जाने वाले परिवेश चर को परिभाषित करें।

  15. प्रत्येक मशीन को कॉन्फ़िगर करने के लिए आपको आवश्यक पर्यावरण चर की संख्या को कम करने का प्रयास करना चाहिए।

  16. प्रत्येक मशीन पर, एक शेल स्क्रिप्ट बनाएं जो आवश्यक पर्यावरण चर को परिभाषित करता है, जो कि THAT मशीन के लिए विशिष्ट है (और संभवतः उस उपयोगकर्ता के लिए विशिष्ट है, यदि प्रासंगिक हो)।

  17. मशीन-विशिष्ट कॉन्फ़िगरेशन शेल स्क्रिप्ट को स्रोत नियंत्रण में न रखें; इसके बजाय, प्रत्येक परियोजना के लिए, टेम्पलेट के रूप में प्रोजेक्ट रूट डायरेक्टरी में स्क्रिप्ट की एक प्रति दें।

  18. प्रत्येक प्रोजेक्ट को अपने प्रत्येक पर्यावरण चर की जाँच करने के लिए स्क्रिप्ट का निर्माण करें, और यदि वे परिभाषित नहीं हैं तो एक सार्थक संदेश के साथ गर्भपात करें।

  19. प्रत्येक प्रोजेक्ट के निर्माण की स्क्रिप्ट को उसके प्रत्येक आश्रित निर्माण उपकरण निष्पादक, बाहरी लाइब्रेरी फ़ाइलों और आश्रित परियोजना को डिलीवर करने योग्य फ़ाइलों की जाँच करने के लिए और उन फ़ाइलों के मौजूद न होने पर एक सार्थक संदेश के साथ निरस्त करें।

  20. स्रोत नियंत्रण में किसी भी उत्पन्न फ़ाइलों को करने के लिए प्रलोभन प्राप्त करें - कोई प्रोजेक्ट डिलिवरेबल्स, कोई उत्पन्न स्रोत, कोई उत्पन्न डॉक्स आदि नहीं।

  21. यदि आप एक आईडीई का उपयोग करते हैं, तो आप जो भी प्रोजेक्ट कंट्रोल फाइल कर सकते हैं, उसे उत्पन्न करें और उन्हें स्रोत नियंत्रण के लिए प्रतिबद्ध न करें (इसमें विजुअल स्टूडियो प्रोजेक्ट फाइलें शामिल हैं)।

  22. सभी बाहरी पुस्तकालयों और उपकरणों की आधिकारिक प्रतिलिपि के साथ एक सर्वर स्थापित करें, जिसे डेवलपर वर्कस्टेशन पर कॉपी / इंस्टॉल किया जाए और मशीनों का निर्माण किया जाए। अपने स्रोत नियंत्रण भंडार के साथ इसे वापस करें।

  23. कोई भी विकास उपकरण जो भी हो, एक निरंतर एकीकरण सर्वर (बिल्ड मशीन) स्थापित करें।

  24. अपने बाहरी पुस्तकालयों और डिलिवरेबल्स के प्रबंधन के लिए एक उपकरण पर विचार करें, जैसे कि आइवी (चींटी के साथ इस्तेमाल किया गया)।

  25. मावेन का उपयोग न करें - यह शुरू में आपको खुश कर देगा, और अंततः आपको रोने देगा।

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

विज़ुअल स्टूडियो समाधान के बारे में अतिरिक्त नोट: उन्हें स्रोत नियंत्रण में न रखें! इस दृष्टिकोण के साथ, आपको उनकी बिल्कुल आवश्यकता नहीं है या आप उन्हें (विजुअल स्टूडियो प्रोजेक्ट फाइलों की तरह) उत्पन्न कर सकते हैं। हालांकि, मुझे व्यक्तिगत डेवलपर्स के लिए समाधान फ़ाइलों को छोड़ने / उपयोग करने के लिए सबसे अच्छा लगता है क्योंकि वे फिट दिखते हैं (लेकिन स्रोत नियंत्रण के लिए जाँच नहीं की जाती)। मैं Rob.slnअपने कार्य केंद्र पर एक फ़ाइल रखता हूं जिसमें से मैं अपनी वर्तमान परियोजना का संदर्भ देता हूं। चूंकि मेरी परियोजनाएं पूरी तरह से अकेली हैं, इसलिए मैं अपनी इच्छानुसार परियोजनाओं को जोड़ / हटा सकता हूं (इसका मतलब है कि कोई परियोजना-आधारित निर्भरता संदर्भ नहीं)।

कृपया सबवर्सन एक्सटर्नल (या अन्य उपकरणों में समान) का उपयोग न करें, वे एक विरोधी पैटर्न हैं और इसलिए, अनावश्यक हैं।

जब आप निरंतर एकीकरण को लागू करते हैं, या यहां तक ​​कि जब आप सिर्फ रिलीज प्रक्रिया को स्वचालित करना चाहते हैं, तो इसके लिए एक स्क्रिप्ट बनाएं। एकल शेल स्क्रिप्ट बनाएं जो प्रोजेक्ट नाम (रिपॉजिटरी में सूचीबद्ध) और टैग नाम के मापदंडों को लेता है, एक कॉन्फ़िगर करने योग्य रूट डायरेक्टरी के भीतर एक अस्थायी निर्देशिका बनाता है, दिए गए प्रोजेक्ट के नाम और टैग नाम के लिए स्रोत की जांच करता है (निर्माण करके) उस अस्थायी निर्देशिका को) तोड़फोड़ के मामले में उपयुक्त यूआरएल, एक साफ निर्माण करता है जो परीक्षण चलाता है और वितरण योग्य पैकेज करता है। यह शेल स्क्रिप्ट किसी भी प्रोजेक्ट पर काम करना चाहिए और आपके "बिल्ड टूल्स" प्रोजेक्ट के हिस्से के रूप में स्रोत नियंत्रण में जांच की जानी चाहिए। आपका निरंतर एकीकरण सर्वर इस स्क्रिप्ट का उपयोग परियोजनाओं के निर्माण के लिए इसकी नींव के रूप में कर सकता है, या यह इसे प्रदान भी कर सकता है (लेकिन आप अभी भी अपना खुद का चाहते हैं)।

@VonC: जब आप अपनी बिल्ड स्क्रिप्ट को तोड़ते हैं तो आप जलने के बाद "एंट-एब्जार्जर" के बजाय "एंटी.जर" के साथ हर समय काम नहीं करना चाहते हैं क्योंकि आप अनजाने में चींटी के असंगत संस्करण के साथ इसे चलाते हैं। यह विशेष रूप से चींटी 1.6.5 और 1.7.0 के बीच आम है। सामान्यीकरण करते हुए, आप हमेशा जानना चाहते हैं कि आपके प्लेटफॉर्म (जावा एबीसीडी) और आपके बिल्ड टूल (एंट ईएफजीएच) सहित हर घटक के किस विशिष्ट संस्करण का उपयोग किया जा रहा है। अन्यथा, आप अंततः एक बग का सामना करेंगे और आपकी पहली BIG समस्या नीचे ट्रैक कर रही होगी कि आपके विभिन्न घटकों के कौन से संस्करण शामिल हैं। यह बेहतर है कि सामने वाले की समस्या को हल किया जाए।


6
इतने सारे अंक आलोचना करने के लिए ... पर्याप्त कहने के लिए यह है नहीं एक सार्वभौमिक नुस्खा! बिंदु 5 और 6 विशेष रूप से ओह गलत हैं, जब परियोजना बड़ी है और तीसरे पक्ष की संख्या महत्वपूर्ण है: आप हर समय 'ant.jar' के साथ काम करना चाहते हैं, न कि 'ant1.5.4.jar', या उत्पाद myProduct .exe, नहीं 1.3.exe
VonC

5
फिर भी, आपके द्वारा बनाए जा रहे कई अन्य बिंदुओं के लिए +1, जो मान्य हैं और विषय पर आपके विशाल अनुभव के लिए अत्यधिक बोलते हैं।
VonC

3
मुझे आपकी आलोचनाओं को सुनना और बातचीत करना अच्छा लगेगा - प्रत्येक और हर बिंदु बड़ी परियोजनाओं के साथ बुरे अनुभवों को सुलझाने पर आधारित है। उदाहरण के लिए, Xxx.jar और Yyy.exe द्वारा कौन से संस्करणों का प्रतिनिधित्व किया जाता है, इस मुद्दे को संबोधित करते हुए, विशेष रूप से तब जब एक दर्जन प्रतियों को संदर्भित किया जा रहा हो।
रोब विलियम्स

2
@ रब - क्या आप अपने 'एक्सटर्नल एंटिफ़र्टन' थीम पर विस्तार से बता सकते हैं? मैंने इसे एक प्रश्न के रूप में यहाँ उठाया है: stackoverflow.com/questions/338824/…
Ken

3
@ माकिस: आप सही होंगे, अगर # 12 # 13 से संतुलित नहीं थे। प्रत्येक परियोजना के भीतर एक फ़ाइल या निर्देशिका के लिए प्रत्येक संदर्भ को एक पूर्ण पथ के माध्यम से बनाया जाना चाहिए, जो एक विन्यास योग्य रूट निर्देशिका चर के साथ शुरू होता है, उदाहरण के लिए चींटी में $ {basedir} /sub/dir/file.txt।
रोब विलियम्स

3

मेरा मानना ​​है कि तोड़फोड़ का उपयोग करके व्यावहारिक संस्करण नियंत्रण में आपके भंडार को व्यवस्थित करने के लिए आवश्यक सब कुछ है।


7
@ कृपया URL की छोटी सेवाओं का उपयोग न करें। यह है ज्यादा बेहतर कहने के लिए "अब यह 2 संस्करण है में: सबवर्सन का उपयोग कर व्यावहारिक संस्करण नियंत्रण "
meagar

3

हमने अपना पोस्ट आपके द्वारा पोस्ट किए गए लगभग पूर्ण मिलान तक सेट कर दिया है। हम सामान्य रूप का उपयोग करते हैं:

\Project1
   \Development (for active dev - what you've called "Trunk", containing everything about a project)
   \Branches (For older, still-evolving supported branches of the code)
       \Version1
       \Version1.1
       \Version2
   \Documentation (For any accompanying documents that aren't version-specific

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


3
मुझे आश्चर्य है कि आपके पास दस्तावेज़ों के लिए एक अलग निर्देशिका है जो संस्करणों के बीच नहीं बदलती है ... मुझे ऐसे उत्पाद पर काम करने का आनंद कभी नहीं मिला! :)
ARKBAN

1

यह सब एक भंडार में क्यों है? प्रत्येक परियोजना के लिए एक अलग भंडार क्यों नहीं है (मेरा मतलब है "समाधान")?

ठीक है, कम से कम मैंने एक-प्रोजेक्ट-प्रति-रिपॉजिटरी-दृष्टिकोण का उपयोग किया है। आपकी रिपॉजिटरी संरचना मुझे बहुत अधिक लगती है।

और आप इस एक बड़े भंडार में कितने प्रोजेक्ट की योजना बना रहे हैं? 2? 3? 10? 100?

और जब आप एक परियोजना के विकास को रद्द करते हैं तो आप क्या करते हैं? बस इसे रिपॉजिटरी ट्री से हटा दें ताकि भविष्य में इसे ढूंढना मुश्किल हो जाए। या इसे हमेशा के लिए झूठ बोलना छोड़ दें? या जब आप एक परियोजना को दूसरे सर्वर पर पूरी तरह से स्थानांतरित करना चाहते हैं?

और उन सभी संस्करण संख्याओं की गड़बड़ी के बारे में क्या? एक परियोजना की संस्करण संख्याएँ 2, 10, 11 की तरह चल रही हैं, जबकि दूसरी 1, 3, 4, 5, 6, 7, 8, 9, 12 जैसी है ...

शायद मैं मूर्ख हूं, लेकिन मुझे रिपॉजिटरी का एक प्रोजेक्ट पसंद है।


1. एक रिपॉजिटरी एक कंपनी की नीति है, इसे बदल नहीं सकते। 2. हमारे पास लगभग दर्जन समाधान होंगे। 3. संस्करण संख्याओं से आपका मतलब संशोधन है? यह हमारे लिए कोई मुद्दा नहीं है।
क्रिज़िस्तोफ़ कोज़मिक

एक अच्छी परियोजना संरचना विशेष रूप से एक या कई रिपॉजिटरी के संबंध में, रिपॉजिटरी संरचना के बाकी हिस्सों से बेखबर होनी चाहिए। कृपया मेरा विस्तृत उत्तर देखें।
रॉब विलियम्स

1
कृपया ध्यान दें कि कई (अधिकांश?) स्रोत नियंत्रण उपकरण में कई रिपॉजिटरी होने से बहुत महंगा हो सकता है, जैसे कि जब आप सुरक्षा लागू करते हैं।
रॉब विलियम्स

0

मुझे लगता है कि प्रस्तावित संरचना का मुख्य नुकसान यह है कि साझा परियोजनाओं को केवल पहले समाधान के साथ जोड़ा जाएगा, जब तक कि उन्हें जोड़ा नहीं जाता है (जब तक कि svn: बाहरी प्रशंसक नहीं है जितना मैं कल्पना कर रहा हूं)। उदाहरण के लिए, जब आप Solution2 के पहले रिलीज़ के लिए एक शाखा बनाते हैं, तो Project1 को ब्रांच नहीं किया जाएगा क्योंकि यह Solution 1 में रहता है। यदि आपको बाद के समय (QFE रिलीज़) में उस शाखा से निर्माण करने की आवश्यकता है, तो यह शाखा के समय Project1 के संस्करण के बजाय Project1 के नवीनतम संस्करण का उपयोग करेगा।

इस कारण से, साझा परियोजनाओं को एक या अधिक साझा समाधान (और इस प्रकार आपकी संरचना में शीर्ष-स्तरीय निर्देशिकाओं) में रखना लाभप्रद हो सकता है और फिर उन्हें किसी भी समाधान के प्रत्येक रिलीज़ के साथ शाखा कर सकते हैं।


आप कुछ हद तक सही हैं। लेकिन अगर हम चाहें तो संदर्भ को अपडेट कर सकते हैं। और शेयर्ड प्रोजेक्ट्स को अपने सॉल्यूशन में डालने से भी कोई मतलब नहीं है। हालांकि मैं svn से बेहतर समाधान खोजना पसंद करूंगा: सभी जगह बाहरी।
क्रिज़िस्तोफ़ कोज़मिक

"यदि हम चाहते हैं तो संदर्भ को अपडेट करें" से आपका क्या अभिप्राय है? मैं यह नहीं देखता कि आप Project1 को शाखा देने में कैसे सक्षम होंगे (जो कि जब भी आप समाधान 2 को शाखा में देखते हैं तो वांछनीय लगता है) समाधान 1 के बिना।
सी। ड्रैगन 76

कृपया मेरे विस्तृत उत्तर को देखें, विशेष रूप से दृश्य स्टूडियो समाधान को स्रोत नियंत्रण में नहीं रखने के लिए।
रोब विलियम्स

0

रिश्तेदार पथ मुद्दे में जोड़ने के लिए:

मुझे यकीन नहीं है कि यह एक समस्या है:
"समाधान 1" नाम की निर्देशिका के तहत बस चेकआउट सॉल्यूशन 1 / ट्रंक, सॉल्यूशन 2 के लिए डिट्टो: वास्तव में शाखाओं का प्रतिनिधित्व करने वाली 'डाइरेक्टरी' का लक्ष्य कार्यक्षेत्र में आयात होने के बाद दिखाई नहीं देना है । इसलिए 'सॉल्यूशन 1' (वास्तव में 'सॉल्यूशन 1 / ट्रंक') और 'सॉल्यूशन 2' (सॉल्यूशन 2 / ट्रंक) के बीच सापेक्ष रास्ते संभव हैं।


यह बहुत आसानी से टूट जाएगा, कृपया मेरा विस्तृत जवाब देखें।
रॉब विलियम्स

0

पुन: संबंधित पथ और साझा फ़ाइल समस्या -

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

हम अभी भी इसे काम कर रहे हैं और मेरे पास 3 अलग-अलग प्रयास (अलग-अलग क्लाइंट) हैं जिन्हें मुझे अभी हल करना है क्योंकि मैंने गैर-मौजूद या खराब संस्करण नियंत्रण स्थापित किया है।


परियोजनाओं के संदर्भ होने से अन्य परियोजनाएं एक बुरा सपना बनाती हैं क्योंकि निर्भरताएं तेजी से बढ़ती हैं और संदर्भ बहुत नाजुक होते हैं। कृपया मेरा विस्तृत उत्तर देखें।
रोब विलियम्स

0

मेरे पास एक समान लेआउट है, लेकिन मेरी ट्रंक, शाखाएं, शीर्ष पर सभी तरह से टैग करती हैं। तो: / ट्रंक / मुख्य, / ट्रंक / बर्तन, / शाखाएं / रिलीज /, आदि।

जब हम अन्य संस्करण नियंत्रण प्रणालियों को आज़माना चाहते थे, तो यह वास्तव में बहुत आसान था क्योंकि अनुवाद के कई उपकरण मूल पाठ्यपुस्तक SVN लेआउट के साथ सबसे अच्छा काम करते थे।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.