2012-06-13 14 views
7

मेरे पास "फ्रेमवर्क" नामक एक समाधान है जो मेरे व्यापार तर्क और डेटा लेनदेन के लिए एक सी # असेंबली है।टीएफएस शाखा अनुशंसा

मेरे पास 4 अनुप्रयोग हैं जो फ्रेमवर्क, 1 वेबसाइट, 1 कंसोल ऐप और 3 अन्य प्रकार के अनुप्रयोगों का उपयोग करते हैं।

$/TeamProject 
    /Framework 
     /Dev 
     /Main 
     /Release 
    /WebApp 
     /Dev 
     /Main 
     /Release 
    /WCFApp 
     /Dev 
     /Main 
     /Release 

मेरे पास ये सभी एक असेंबली/एप्लिकेशन के साथ अपने स्वयं के फ़ोल्डर के तहत एक टीम प्रोजेक्ट में हैं।

मैं फ्रेमवर्क असेंबली साझा करने वाले प्रत्येक एप्लिकेशन के लिए ब्रांचिंग सुविधा का उपयोग करना चाहता हूं लेकिन मुझे नहीं पता कि फ्रेमवर्क के साथ एप्लिकेशन को ब्रांच करने का सबसे अच्छा तरीका क्या है?

कोई सुझाव?

मुझे पता है कि ब्रांचिंग और विलय कैसे काम करता है, लेकिन सभी उदाहरण केवल 1 फ़ोल्डर में मौजूद सभी चीज़ों को ब्रांच करने का प्रदर्शन करते हैं।

+0

दिखाया स्रोत नियंत्रण में मेरी फ़ाइलें वर्तमान में –

उत्तर

7

एक तस्वीर अपने स्रोत नियंत्रण निर्देशिका का प्रतिनिधित्व करने के प्रकाश में, मैं निम्नलिखित धारणा बना देंगे:

 
$/TeamProject 
    /Framework 
    /Console 
    /Web 
    /etc. 

क्या आप पहली बार करने की जरूरत है (यह आपका मुख्य हो जाएगा $/TeamProject में एक फ़ोल्डर Main बनाएं जिसका नाम है - उर्फ ​​ट्रंक - शाखा) और अपने सभी शीर्ष स्तर फ़ोल्डरों को इसमें ले जाएं।

तो फिर हमने:

 
$/TeamProject 
    /Main 
    /Framework 
    /Console 
    /Web 
    /etc. 

अब आप एक शाखा को Main बदलने की आवश्यकता है, तो आप Main फ़ोल्डर पर राइट क्लिक करके ऐसा कर सकते हैं और "शाखा में बदलें" चुनें। टीएफएस अब आपको $/TeamProject/Main से $/TeamProject/ConsoleV2 (उदाहरण के लिए) की शाखा बनाने और कंसोल के वी 2 के लिए सुविधाओं पर काम करने की अनुमति देगा। यदि आप इस शाखा में आवश्यक हो तो कंसोल एप्लिकेशन और फ्रेमवर्क को संशोधित कर सकते हैं। जब यह कार्य पूरा हो जाता है तो आप Main में परिवर्तनों को एकीकृत (विलय) कर सकते हैं।

प्रदर्शन सुविधा को जारी रखने के लिए याद रखें Main से आपकी सुविधा शाखा में विलय (मर्ज डाउन) और कोड बेस को सिंक्रनाइज़ करने के लिए किसी भी विवाद को हल करना।

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

+0

मुझे इस अपहरण से अवगत है, इसके साथ समस्या यह है कि अगर मैं फ्रेमवर्क के साथ अपने कंसोल ऐप को ब्रैच करना चाहता हूं तो मुझे इसके साथ सबकुछ ब्रांच करना होगा ... क्या यह सामान्य दृष्टिकोण है? –

+0

को मारने पर थोड़ा सा लगता है, जहां आप स्रोत रिपोजिटरी में से शाखा बनाते हैं, वह उस शाखा के आकार को नहीं बदलेगा जो इसे बनाता है। हमने इस दृष्टिकोण का उपयोग हमारे आवेदन के कई अलग-अलग हिस्सों को शाखा में करने के लिए किया है जो संस्करण स्वतंत्र हैं ताकि हम एक ही समय में निर्भर भागों को अपडेट कर सकें। आप उन फ़ोल्डर्स को अनदेखा कर सकते हैं जिन पर आप काम नहीं करते हैं। – DaveShaw

+0

मैंने अपनी टीम प्रोजेक्ट –

-2

यदि आप व्यक्तिगत परियोजनाओं के लिए & विलय करना चाहते हैं, तो टीएफएस के तहत प्राप्त करने का एकमात्र तरीका यह है कि आपके समाधान में प्रत्येक परियोजना के लिए एक अलग टीएफएस परियोजना तैयार करें। उम्मीद है कि समझ में आता है। एक बार, आप ऐसा करते हैं, तो आप प्रत्येक प्रोजेक्ट से अपनी कार्यशील निर्देशिका में कोड कोड कर सकते हैं।

हमने कुछ समय पहले वीएसएस से हमारे कोड को टीएफएस में माइग्रेट किया था। उस समय, हमें सभी कोड को 1 टीएफएस प्रोजेक्ट में डालने या उन्हें तोड़ने का फैसला करना पड़ा। इसलिए, हमारे पास एक वेबसाइट, एक व्यवसाय लाइब्रेरी है (जिसका उपयोग वेबसाइट & अन्य ऐप्स द्वारा किया जाता है), एक डेटा परत। हमने पुस्तकालय, वेबसाइट और डेटा परत परियोजनाओं के लिए एक अलग टीएफएस परियोजना बनाई है। प्रत्येक परियोजना में एक ट्रंक शाखा होगी। नवीनतम लोगों को हर किसी को अपनी प्रतिलिपि ट्रंक से शाखा में रखेगी और वहां वापस विलय करेगी।

उम्मीद है कि मदद करता है।

+0

देखो कैसे तो आपको कैसे 1 शाखा में प्रत्येक विधानसभा विलय कर रहे हैं? –

+0

यह बात है। प्रत्येक डेवलपर को स्थानीय समाधान फ़ाइल रखना होगा। इसलिए, अगर मुझे वेबसाइट, लाइब्रेरी और डेटा एक्सेस लाइब्रेरी की ज़रूरत है, तो मैं उन शाखाओं को टीएफएस से अपने अंत में समाधान में प्राप्त करूंगा और समाधान में कभी भी जांच नहीं करूंगा। – Skadoosh

+0

इन पर एक नज़र डालें: http://stackoverflow.com/questions/400517/tfs-structure-multiple-projects-or-single-project और http://stackoverflow.com/questions/867628/merging-and-branching -श्रेड-कोड-बीच-प्रोजेक्ट-इन-टीएफएस – Skadoosh

2

आपका प्राथमिक प्रश्न जैसा कि मैं समझता हूं "फ्रेमवर्क पर निर्भर मेरे अनुप्रयोगों को ब्रांच करने के लिए सबसे अच्छी शाखा संरचना क्या है?" यदि आप हमेशा उन्हें एक साथ बनाते हैं और संस्करण/रिलीज करते हैं तो यह डेवशॉ descibes के रूप में सभी को एक साथ शाखाओं के लिए आसान और कम महंगा है; हालांकि, यदि उनमें से प्रत्येक अलग-अलग टीमों द्वारा विकसित किया गया है, तो अलग-अलग रिलीज शेड्यूल करें, अलग-अलग संस्करण हैं, आदि ... आप उनमें से प्रत्येक के तहत एक मुख्य शाखा बनाना चाहते हैं। इस मामले में, यह भी स्पष्ट होना चाहिए कि फ्रेमवर्क में परिवर्तन किसके पास है। आमतौर पर उन लोगों को चेक-इन पहुंच को नियंत्रित करना एक अच्छा विचार है, जिन्हें फ्रेमवर्क जैसी साझा परियोजनाओं के लिए इसकी आवश्यकता होती है।

यदि बाद का मामला सत्य है, तो मुझे लगता है कि आपका वर्तमान ग्राफिक इसे अच्छी तरह से संभालता है, लेकिन मैं एक बदलाव करता हूं; मुख्य विज्ञप्ति के रूप में पदानुक्रम में समान स्तर पर अपनी विज्ञप्ति रखें ताकि संदर्भ बनाने के लिए सापेक्ष पथ समान रहता है; यह आपके कार्यक्षेत्र मैपिंग को सरल बनाएगा:

$/TeamProject 
    /Framework 
     /Dev 
     /Main 
     /Release1 
     /Release2 
     /Release3 
     ... 
    /WebApp 
     /Dev 
     /Main 
     /Release 
      /Release1 
      /Release2 
      /Release3 
      ... 
    /WCFApp 
    ...