2009-05-15 12 views
7

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

एप्लिकेशन समरूप लेकिन समान नहीं तो एक ऐप्स ऐसी सुविधा दूसरों सेट हो सकता है आदि नहीं मिलेगा

हैं मैं कोड के आदान-प्रदान और शाखाओं के बजाय की स्थापना को रोकने के लिए (कि अगर फिट बैठता है) चाहते हैं तो अगर मैं एप्लिकेशन ए: कोर कोर लाइब्रेरी में कुछ बदलता हूं तो मुझे परिवर्तनों को स्वचालित रूप से बदलने के बजाय अन्य शाखाओं के साथ परिवर्तनों को मर्ज करना होगा। यह आपके ट्रंक से अपडेट होने पर आश्चर्य से बचने के लिए और अचानक कोर किसी अन्य प्रोजेक्ट के लिए बदल गया है और यह प्रोजेक्ट किसी भी तरह से टूट जाता है।

किसी भी सुझाव पर मुझे इसे टीएफएस में कैसे स्थापित करना चाहिए? क्या मेरे पास "मुख्य" कोर होना चाहिए जिसका उपयोग किसी अन्य प्रोजेक्ट में सीधे नहीं किया जाता है जो कि अन्य सभी कोरों का अभिभावक है, इसलिए मैं इसे एक कोर से बदल सकता हूं और फिर इसे दूसरे कोर में वितरित कर सकता हूं? क्या यह समझ में आता है और क्या टीएफएस में स्थापित करना आसान होगा?

उत्तर

3

आपकी टिप्पणी के जवाब में, मैं आपको CodePlex वेबसाइट पर Feature branches पर पढ़ने का सुझाव दूंगा।

परिदृश्य 4 - फीचर
इस परिदृश्य में के लिए शाखा, आप एक विकास शाखा बनाने के लिए, कि शाखा में काम करते हैं, और फिर अपने मुख्य स्रोत पेड़ में अपने काम विलय वापस। आप उत्पाद सुविधाओं के आधार पर अपनी विकास शाखाओं व्यवस्थित करें।

मेरी टीम परियोजना

 Development -> Isolated development branch container 
     Feature A -> Feature branch 
      Source 
     Feature B -> Feature branch 
      Source 
     Feature C -> Feature branch 
      Source 
     Main  -> Main Integration branch 
      Source 

हम alos निकट भविष्य में TFS करने के लिए SS से आगे बढ़ रहे हैं: निम्नलिखित एक भौतिक सुविधा विकास के लिए शाखाओं में दृश्य दिखाए जा रहे है।

जैसा कि मुझे लगता है, हम अपने SS भंडार ऑनलाइन रखने जा रहे हैं और TFS में ताजा शुरू कर देंगे। हमारे ढांचे शायद TFS में अपनी परियोजना प्राप्त करेंगे। परियोजना विशिष्ट साझा इकाइयों को समय-समय पर विलय करने की आवश्यकता होगी।


जिस तरह से आप अपनी भंडार को व्यवस्थित करते हैं, वह आपकी विशिष्ट स्थिति पर निर्भर करता है। प्रत्येक शाखा परिदृश्य में इसके विशिष्ट फायदे और दोष होते हैं।

  • कितने परियोजनाओं
  • कितने डेवलपर्स
  • डेवलपर्स समर्पित
  • आप समवर्ती गर्म फिक्स की जरूरत है कर रहे हैं
  • आप की जरूरत सेवा पैक

पर एक नजर डालें करो CodePlex branching guide आपकी जानकारी के लिए आपको अपनी टीएफएस संरचना के बारे में एक सूचित निर्णय लेने की आवश्यकता है। cheat sheets प्रिंट करें और त्वरित संदर्भ के लिए उन्हें अपनी दीवार पर पिन करें।

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

+0

यह एक बहुत अच्छा संसाधन है। हालांकि यह मेरी दुविधा को हल नहीं करता है। मैं वास्तव में इस बारे में बात नहीं कर रहा हूं कि मुझे एक परियोजना के भीतर कैसे शाखा बनाना चाहिए, बल्कि इसके बजाय मेरे पास तीन अलग-अलग परियोजनाएं हैं जो कुछ कोड साझा करती हैं (अधिक या कम)। –

2

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

मेरे पास एक ग्राहक है जिसने टीएफएस के लिए एक एकल टीम प्रोजेक्ट पर फैसला किया है। इसमें कुछ भी गलत नहीं है - और यह कई परिस्थितियों में वास्तव में सबसे अच्छा परिदृश्य है।

यदि आपको वास्तव में एप्लिकेशन की प्रतियों के बीच बहुत मजबूत अलगाव की आवश्यकता है (शायद वे अलग-अलग ग्राहक हैं और आपको बहुत मजबूत सुरक्षा पृथक्करण की आवश्यकता है) और अलग टीम परियोजनाएं होनी चाहिए।

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

यह Codeplex TFS में शामिल है: http://tfsguide.codeplex.com/

एक और दृष्टिकोण मैंने कई ग्राहकों के लिए किया गया - एक टीम प्रोजेक्ट है जिसमें साझा कोड है। "बिल्ड" साझा कोड के लिए बाइनरी बनाता है - और "तैनाती" बस उन्हें "ज्ञात स्थान" (यानी निर्माण मशीन पर यूएनसी शेयर) पर प्रतिलिपि बनाता है

"उपभोक्ताओं" के "उपभोक्ता" फ्रेमवर्क "हमने उस ज्ञात स्थान के स्थान को शामिल करने के लिए" अतिरिक्त रेफरेंसपैथ "आइटम समूह का उपयोग किया था।

इसके अलावा - यह टूल: http://tfsdepreplicator.codeplex.com/ सहायक हो सकता है। जब भी "फ्रेमवर्क" समाधान बनाया जाता है, यह आपको अपने "उपभोक्ता" परियोजनाओं के लिए स्वचालित रूप से ट्रिगर करने की अनुमति देगा।

0

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

0

मैं एक ही जानकारी निर्धारित करने की कोशिश कर रहा था, codeplex पर इस गाइड

http://vsarbranchingguide.codeplex.com/releases

शब्दावली और विभिन्न शाखाओं में कार्यप्रवाह दृष्टिकोण के साथ ही नकल पुस्तिकाएं शामिल एकदम सही है।