2012-03-30 9 views
8

एक blog राज्योंसमझौता लेबल सीमाओं

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

यह एकमात्र ऐसा स्थान नहीं है जहां मैंने टीएफएस लेबल के बारे में समान जानकारी पढ़ी है। इतिहास की कमी काफी स्पष्ट है। दूसरा भाग "लेबल संस्करणों की प्रतियां नहीं रखता है ..." अस्पष्ट है। वास्तव में, मैंने एक परीक्षण प्रोजेक्ट बनाया> इसे लेबल किया> एक फ़ाइल हटा दी> लेबल द्वारा प्राप्त किया गया और फ़ाइल वापस आई। तो इसका जिक्र क्या है? हाल ही में टीएफएस में लेबल कार्यक्षमता बदल गई है?

मुझे एहसास है कि एक फ़ाइल हटाना वास्तव में इतिहास को हटा नहीं देता है, क्या यह कारण है? दूसरे शब्दों में, मैं

tf नष्ट चलाते हैं "$/MyTeamProject/परियोजना/FileName.cs"

कि क्या यह एक फ़ाइल को नष्ट करने का मतलब है? यदि ऐसा है, तो यह भी विचार करने के लिए एक असाधारण परिस्थिति लगता है। मेरा मतलब है, यह इतिहास का एक जानबूझकर अप्राप्य हटाने योग्य है। इस तरह के मामले में लेबल पर परिवर्तनों में कोई सुधार नहीं होगा।

उत्तर

2

जब हम एक लेबल लागू करते हैं तो हम समय पर एक बिंदु नियंत्रण के संस्करण के लिए ऐसा करते हैं। सहजता से, क्योंकि हमने शुरुआत में एक समय पर स्रोत नियंत्रण का एक स्नैपशॉट बनाया था, एक व्यक्ति स्नैपशॉट समय पर एक बिंदु पर स्रोत कोड का प्रतिनिधित्व कर सकता है।

यह गलत है। निर्माण के बाद लेबल संपादित किया जा सकता है।

संकल्पनात्मक रूप से, एक लेबल एक उत्पाद और उत्पाद के बग-फ़िक्स (source) को परिभाषित करता है। असली दुनिया का उदाहरण मदद कर सकता है। मान लें कि हमारे पास अल्फाबोगरबियर नामक एक उत्पाद है। AlphaBoogerBear एक उत्पाद है, संस्करण नहीं (पूर्व-रिलीज विंडोज नाम सोचें)। AlphaBoogerBear लेबल, अल्फाबोगरबियर लेबल में बनाया जा सकता है। हम अल्फाबोगरबियर की रिहाई करते हैं। कुछ कीड़े हैं हम उन्हें ठीक करते हैं।

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

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

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

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

1

मुझे यकीन नहीं है कि फ़ाइल हटाने से प्रभावित लेबलों के बारे में वाक्य का क्या अर्थ है। लेकिन आपके पास यह सही है, एक नियमित फ़ाइल हटाने से लेबल प्रभावित नहीं होंगे, लेकिन नष्ट हो जाएगा।

हालांकि यह संस्करण नियंत्रित नहीं होने के संबंध में आपको क्या चेतावनी दे रहा है, यह है कि कोई लेबल से फ़ाइलों को शामिल या बहिष्कृत करके या लेबल में शामिल फ़ाइलों के संस्करणों को बदलकर लेबल को संपादित और संपादित कर सकता है। और लेबल परिभाषा में इन परिवर्तनों का कोई इतिहास नहीं होगा।

0

जैसा कि मैं इसे समझता हूं, टीएफएस में एक लेबल मूल रूप से परिवर्तनों का सेट/संग्रह है।

मान लें कि आप इसमें दो फाइलों वाली निर्देशिका लेबल करते हैं। लेबल में तीन परिवर्तन होंगे: एक निर्देशिका के लिए और प्रत्येक फ़ाइल के लिए एक। टीएफएस में इन फ़ाइलों में से किसी एक को हटाने से निर्देशिका के लिए एक नया परिवर्तन होगा, इसलिए इस चरण में लेबल द्वारा प्राप्त करने से हटाए गए फ़ाइल को "वापस" मिल जाएगा क्योंकि इसमें हटाने से पहले परिवर्तन शामिल है। को नष्ट करने से एक फ़ाइल इसे किसी भी परिवर्तन रिकॉर्ड से हटा देगी, इस प्रकार लेबल में जानकारी को नष्ट कर देगा।

चूंकि लेबल को केवल इसके नाम से पहचाना जाता है, इसलिए पुरानी जानकारी को नष्ट करने, इसे नए लेबल से ओवरराइट करना भी बहुत आसान है। इस आदेश के लिए /child पैरामीटर कुछ हद तक इस व्यवहार को बदल सकता है: /child:merge का उपयोग करके उन परिवर्तनों को बनाए रखा जाएगा जो पहले नए, /child:replace के साथ रिकॉर्ड किए गए थे, पुराने बदलाव को नए के साथ बदल देंगे। उपर्युक्त उदाहरण में, इनमें से कोई भी विकल्प कोई फर्क नहीं पड़ता है, क्योंकि लेबल से प्राप्त करें अभी भी उच्चतम परिवर्तन प्राप्त करेगा।