2012-04-02 14 views
6

के साथ प्राप्त करें मैं बहुत हल्का "बिल्ड" स्क्रिप्ट लिखने की कोशिश कर रहा हूं जो मूल रूप से केवल टीएफ (चेंजसेट नंबर के आधार पर) से कुछ फाइलें प्राप्त करेगा। तब मैं उन फ़ाइलों को SQLCMD में चलाऊंगा।टीम फाउंडेशन सर्वर - टीएफ चेंजसेट नंबर

मैं इस का उपयोग कर रहा:

tf.exe get c:\tfs\ /version:c2681 /force /recursive 

हालांकि, इस changeset # 2681 में सब कुछ नहीं, फ़ाइलें प्राप्त होता है। मैं इसे अपने tfs वर्कस्पेस की जड़ पर इंगित करने में सक्षम होना चाहता हूं, इसे एक परिवर्तन संख्या दें, और इसे केवल उन कुछ विशिष्ट फ़ाइलों को अपडेट करें। इसके अलावा, ऐसा लगता है कि पुराने संस्करण हो रहे हैं (संभवतः जब परिवर्तन # 2681 में चेक किया गया था तो वर्तमान में क्या था)?

क्या उन विशिष्ट फ़ाइलों को प्राप्त करने का कोई तरीका है, विशेष रूप से टीएफ में आइटम्सपीसी प्राप्त करने के लिए उन्हें बाहर कॉल करने की आवश्यकता के बिना?

संपादित करें: मुझे वास्तव में कुछ भी करने के लिए वास्तव में/बल विकल्प जोड़ना पड़ा। बल के बिना, यह सर्वर से स्थानीय रूप से हटाई गई फ़ाइल से भी पुनर्प्राप्त नहीं होता है, यह निश्चित रूप से परिवर्तन में है।

धन्यवाद, सिल्विया

उत्तर

2

टीएफएस सर्वर प्रत्येक कार्यक्षेत्र में क्या ट्रैक करता है इसका ट्रैक रखता है। गैर-टीएफएस क्लाइंट कमांड के साथ स्थानीय रूप से किए गए कोई भी बदलाव (चाहे tf.exe, टीम एक्सप्लोरर या कोई अन्य क्लाइंट) टीएफएस सर्वर के दृश्य और वास्तव में क्या मौजूद है के बीच अंतर पैदा करेगा।

विभिन्न ग्राहकों पर बल विकल्प केवल इस तरह की असंगतताओं को हटा देता है (क्लाइंट पर जो कुछ भी है और सर्वर क्या सोचता है उसे प्रभावी ढंग से रीसेट कर देता है)।

जब आप किसी निर्दिष्ट संस्करण (चाहे तिथि, परिवर्तन या लेबल) के खिलाफ प्राप्त करते हैं, तो आप उस बिंदु पर उस समय तक और उस बिंदु को शामिल करते हैं, चाहे उस बिंदु पर विशेष रूप से परिवर्तित न हो। तो

tf get /version:D2012-03-30 

उस तारीख को या उससे पहले किए गए परिवर्तनों को प्राप्त करेगा।

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

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


यह TFS11 स्थानीय कार्यस्थानों के साथ बदल जाएगा।

ईजी। किसी फ़ोल्डर के नाम को सौंपना कुछ गैर-तुच्छ काम करेगा।

+0

विवरण के लिए धन्यवाद, रिचर्ड। ऐसा लगता है कि मुझे टीएफएस बिल्ड में देखने की आवश्यकता हो सकती है। लेकिन शायद अभी के लिए मैं इस तरह कुछ करूँगा: tf.exe $/डेटाबेस/डीबीइंजिन/डाटाबेसनाम/एसपी/प्रक्रिया एनएएम.क्यूएल/संस्करण प्राप्त करें: c2681/बल – Sylvia

1

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

तो बस हटाने/बल शायद आप जो चाहते हैं उसे प्राप्त करेंगे।

संपादित जैसा कि मैंने ऊपर कहा, TFS कि यह सोचता है कि विभिन्न सर्वर से कर रहे हैं सभी फाइलों को मिल जाएगा। यदि आप अपने स्थानीय वर्कस्पेस से फ़ाइल को मैन्युअल रूप से हटाते हैं, तो टीएफएस नहीं जान पाएगा कि यह आपके स्थानीय संस्करण से गायब है, इसलिए ऐसा नहीं लगता कि इसे फ़ाइल को अपडेट करने की आवश्यकता है। इसके लिए तीन समाधान हैं:

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

त्वरित उत्तर जेसन के लिए धन्यवाद! प्रश्न में संपादित करें देखें। – Sylvia

4

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

यदि आपके पास वीएस 2010 है, तो आप here उपकरण डाउनलोड कर सकते हैं। यदि आपके पास पुराना संस्करण है, तो एक बिंग :) खोज आपको टूल के सही संस्करण को खोजने में मदद करनी चाहिए। यदि आप Getcs कमांड के बारे में अधिक पढ़ना चाहते हैं, तो बक होजेस की पोस्ट here देखें।

+0

धन्यवाद बहुत टेलर ... मैं निश्चित रूप से गेट्स कार्यक्षमता की जांच कर रहे हैं, उपयोगी लगता है। – Sylvia

संबंधित मुद्दे