2009-06-05 10 views
31

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

धन्यवाद!

उत्तर

32

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

इसके अलावा, लेबलिंग बहुत कम संसाधन गहन है। और आपके पास फ़ाइल के उसी संस्करण पर एकाधिक लेबल हो सकते हैं।

+16

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

2

अभी भी, कभी भी हम एक निर्माण करते हैं, हम फ़ाइलों को संस्करण संख्या

ऐसा करने के लिए की जरूरत नहीं है के साथ TFS में जाँच कर रहे हैं लेबल। टीएफएस कई तरीकों से कोडबेस की स्थिति को संदर्भित कर सकता है, जिसमें से लेबल वास्तव में एक हैं - लेकिन ऐसे ही निर्माण और यहां तक ​​कि परिवर्तन भी हैं। आप एक Get Specific Version... कर रहे हैं और Type लटकती में विकल्पों का परीक्षण करके समय में एक खास बिंदु को फिर से संगठित करने के लिए उपलब्ध तरीके देख सकते हैं:

Changeset 
Date 
Label 
Latest Version 
Workspace Version 

Changeset आप बस किसी भी changeset के बाद प्राप्त करने के लिए अनुमति देता है; Date स्पष्ट है; Label भी है, सिवाय इसके कि यह स्वचालित रूप से बनाता है * लेबल बनाएं (Label इस ड्रॉपडाउन से चुनें, फिर Find Label संवाद में देखें)।

* मुझे लगता है कि यह स्वचालित है! जब तक यह कुछ ऐसा नहीं है जिसे हमने विशेष रूप से स्थापित किया है, जहां मैं इस समय हूं ...

+3

टीम बिल्ड स्वचालित रूप से लेबल कर सकता है, जब आप बिल्ड परिभाषा सेटिंग्स (उन्नत अनुभाग के अंतर्गत) में विकल्प चुनते हैं। – jessehouwing

7

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

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

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

लेबलिंग बहुत शक्तिशाली, उपयोग करने में सुविधाजनक है, और टीएफएस का एक हिस्सा है। अपने कस्टम समाधान के साथ आने के बजाय इसे काम करने और बनाए रखने के लिए बहुत मेहनत की आवश्यकता है, बस पहले से उपलब्ध होने का उपयोग करने का प्रयास करें।

0

स्टैक ओवरव्लो मुझे ऊपर दिए गए उत्तरों पर टिप्पणी नहीं करने देगा, इसलिए मैं इसे एक नया "उत्तर" के रूप में लिख रहा हूं। मैं ऊपर सूचीबद्ध कुछ गलत धारणाओं को स्पष्ट करना चाहता हूं।

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

दूसरा, बिल्ड स्वचालित रूप से लेबल नहीं बनाते हैं, हालांकि डिफ़ॉल्ट निर्माण चरणों में लेबल बनाने के लिए एक चरण शामिल है।

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

कुल मिलाकर मैं आपको लेबल का उपयोग करने की सलाह देता हूं। सबसे आसान विकल्प केवल आपके निर्माण के लिए परिवर्तन संख्या याद रखना है। या यदि आप विभिन्न रिलीज संस्करणों को अलग करना चाहते हैं, तो आपको रिलीज शाखाएं बनाना चाहिए।

लेबल छोटे सिस्टम के लिए ठीक हैं, लेकिन बड़े उद्यमों के लिए अच्छा नहीं है।

+0

हमारे सेटअप में, हमारे पास VSTS एजेंट पर बिल्ड प्रक्रिया है, निर्माण के सफल होने के बाद कोड के उस संस्करण पर एक लेबल बनाएं। यह उन प्रदर्शन समस्याओं को कम नहीं करता है जिनके बारे में आपने बात की है, लेकिन लेबल को और अधिक भरोसेमंद बनाते हैं कि वे एक चैन्ससेट नंबर के रूप में स्थायी और निश्चित के रूप में कुछ संदर्भित कर रहे हैं। यह हमें बिल्ड में शामिल कोड के संस्करण को आसानी से ढूंढने की अनुमति देता है, लेकिन अगर कोई लेबल संपादित या हटा देता है, तो यह कोई आपदा नहीं होगी। –