TFS: आप एक बैच फ़ाइल में अनमॉडिफाइड फ़ाइलों का चेकआउट कैसे कर सकते हैं


172

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

"Tfs पूर्ववत करें" आदेश चेकआउट को पूर्ववत् करता है, लेकिन संकेत देता है कि कुछ को संशोधित किया गया है (जो हम नहीं करना चाहते हैं)। हम जनरेट की गई फाइलों को तुरंत जांचना भी नहीं चाहते हैं।

क्या उपयोगकर्ता को संकेत दिए बिना सभी अनमॉडिफाइड फ़ाइलों को चेकआउट करने के लिए एक कमांड (या आदेशों की श्रृंखला) है?


ध्यान दें कि मैन्युअल रूप से चुनने की उम्मीद के साथ सभी परिवर्तनों को नाश करने के लिए "नहीं सभी" फ़ाइलें इस बारे में संकेत दिए जाने पर है बदल सही ढंग से काम नहीं करेगा, के रूप में यह पूर्ववत होगा ADDसंकेत दिए बिना परिवर्तन (देखें रे की जवाब )।
इलास्कानेटर

जवाबों:


202

अगस्त 2011 टीम फाउंडेशन सर्वर पावर टूल्स के पूर्ववत आदेश पर एक नज़र डालें

c:\myProject> tfpt uu . /noget /recursive

लिंक अपडेट के लिए धन्यवाद मैट फ़्लोरेंस।

वास्तविक वाक्यविन्यास के लिए धन्यवाद रे वेगा ।


1
उत्तर सामग्री के भाग के रूप में उपयोग की जानकारी को समाहित करने के लिए इसे संपादित / मर्ज किया जाना चाहिए।
mcw

4
आप वास्तव में इस पोस्ट को पढ़ना चाहते हैं: aaubry.net/undo-checkout-on-unchanged-files-tfs.html
बायरन

17
हम्म, कोई है कि लगभग हर कोई कई बार दैनिक करता है: "बिजली उपकरण नामक एक अलग इंस्टॉलर में डाल देता है ... आह
vidstige

1
@ माइक चलिए आप सोचेंगे। मैं अभी टीएफएस की कोशिश कर रहा हूं, और यह खोज कर रहा हूं कि यह कैसे करना है और यहां समाप्त हुआ।
vidstige

3
यदि आपके परिवर्तन मर्ज हैं तो यह काम नहीं करता है। ऐसा लगता है कि tupt uu हमेशा मर्ज को एक वास्तविक परिवर्तन मानता है, भले ही कोई फ़ाइल परिवर्तन न हो, और उस व्यवहार को फ्लिप करने का कोई विकल्प नहीं है। यह डिफ़ॉल्ट व्यवहार के रूप में ठीक है, लेकिन कभी-कभी यह वह नहीं है जो आप चाहते हैं।
user1164178

124

टीम फाउंडेशन सर्वर पावर टूल्स को स्थापित करें और कमांड लाइन से tfpt.exe का उपयोग करके अपनी परियोजना के कार्यक्षेत्र निर्देशिका के रूट पर निम्नलिखित चलाएँ:

c:\myProject> tfpt uu . /noget /recursive

शामिल करने /nogetकी अत्यधिक अनुशंसा की जाती है क्योंकि यह आपकी परियोजना की सभी फाइलों को एक 'नवीनतम' प्राप्त करने से रोकता है जो कि कुल संख्या के आधार पर बहुत लंबा समय ले सकता है।


12
यह स्वीकृत उत्तर होना चाहिए, इसमें सभी प्रासंगिक विवरण हैं (जैसा कि उच्च स्कोर से साबित होता है)।
रिको

7
ठंडा। इसके अलावा, इसे विज़ुअल स्टूडियो में एक स्थायी 'बाहरी उपकरण' के रूप में क्यों न जोड़ें। इसे एक उदाहरण के रूप में लेते हुए: blog.kurtschindler.net/post/… कमांड: [आपकी स्थापना dir] \ TFPT.EXE तर्क: uu। / noget / पुनरावर्ती आरंभिक निर्देशिका: $ (SolutionDir)
rohancragg

12
प्रश्न इस ऑपरेशन को संकेत के बिना करने के लिए निर्दिष्ट करता है , लेकिन कोई भी उत्तर इसे संबोधित नहीं करता है। यदि आपको इसकी आवश्यकता है, तो अतिरिक्त / noprompt वह विकल्प है जिसकी आप तलाश कर रहे हैं। PowerTools प्रलेखन यह याद आ रही है! यह कुछ आदेशों के लिए इस विकल्प को सूचीबद्ध करता है, लेकिन यह एक (UU) नहीं। सावधान रहें!
जॉनी कॉफमैन

1
@ user20358 या तो cdजहां आपके कार्यक्षेत्र निर्देशिका है (उदाहरण के लिए, मेरा था c:\myProject) या स्पष्ट रूप से इसमें शामिल होने के बाद uu( .इसके साथ अवधि की जगह )
रे

क्या इसके पास बल स्विच है, जैसे / Y या / बल? मुझे हमेशा पूछा जाता है कि क्या वास्तव में इसे पूर्ववत करना चाहते हैं, और मुझे लगता है कि स्वचालित होना चाहिए। वहाँ रखो / Y, लेकिन यह मुझे बताता है कि विकल्प Y को एक मूल्य की आवश्यकता है।
स्क्विरेलकिलर

118

साभार

मैं इसे आसान बनाना चाहता हूं।

वीएस में, टूल मेनू पर, "बाहरी टूल" पर क्लिक करें।

बाहरी उपकरण

जोड़ें पर क्लिक करें।

शीर्षक दर्ज करें।

कमांड: tfpt.exe

तर्क: uu। / नोगेट / पुनरावर्ती

प्रारंभिक निर्देशिका: [आप तीर बटन से चुन सकते हैं]।

समाधान में अपरिवर्तित पूर्ववत करें

परियोजना में अपरिवर्तित पूर्ववत करें

टूल मेनू में दो नए कमांड जोड़े गए हैं।

जरूरत पड़ने पर इनका इस्तेमाल करें।

का आनंद लें,

Ofir


3
बहुत ही शांत। आप एक कदम आगे भी जा सकते हैं और एक शॉर्टकट जोड़ सकते हैं। ध्यान दें कि आपका जोड़ा गया कमांड कितना नीचे है (जैसे यह चौथा हो सकता है)। फिर टूल्स -> विकल्प -> पर्यावरण -> कीबोर्ड -> और 'टेक्स्टबॉक्स' टूल्स 'एक्सटर्नल' शो कमांड में टाइप करें और एक शॉर्टकट असाइन करें। उदाहरण के लिए मैंने Tools.ExternalCommand4 का चयन किया क्योंकि मेरे नए जोड़े गए कमांडो चौथे से नीचे थे। फिर मैंने शॉर्टकट कुंजियों को Ctrl + Alt + U, Ctrl + Alt + U
Mario

1
क्या हम इसका अद्यतन संस्करण दे सकते हैं? अगर tf.exe मिला है, लेकिन uu कमांड क्या है? यह मुझे गैरकानूनी आदेश बताता है: uu। मदद के लिए धन्यवाद
Shay

1
@ Shay: मेरे लिए VS2015 में नवीनतम TFS बिजली उपकरणों के साथ काम करता है।
इगोर मालिन

27
  1. अपने प्रोजेक्ट पर राइट-क्लिक करें
  2. पूर्ववत चेकआउट का चयन करें, फिर बस ठीक क्लिक करें, या जो भी पुष्टि बाकी है ...
  3. फिर, चेकआउट को पूर्ववत करते समय, उस फ़ाइल के लिए जिसमें REAL परिवर्तन होता है, एक प्रॉम्प्ट आपको उस फ़ाइल के लिए चेक आउट की पुष्टि करने के लिए कहेगा ... बस "No to All" पर क्लिक करें

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

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


14
Be aware that this method also removes added files that are not yet checked in from TFS.... हाँ, यह एक बहुत ही तत्काल अयोग्य है।
शॉर्टस्टफशूशी

1
यह मेरा आधारहीन शाखाओं के विलय के लिए काम करता है । धन्यवाद। आमतौर पर इस मामले में वीएस ने सभी फाइलों को हल के रूप में चिह्नित किया।
KoViMa

2
यह एक नरक है जब नगेट 10000 फ़ाइलों के लिए चेकआउट करता है जिन्हें अपडेट करने की आवश्यकता नहीं होती है।
इवगेन नेडा

13

केवल टीएफएस २०१ answer और वीएस २०१ answer / वीएस २०१ ९ के साथ काम करने पर इस सवाल का जवाब दें

टीएफएस 2017 के लिए बिजली उपकरण मौजूद नहीं हैं और पुराने लोग इसके साथ मिलकर अच्छा काम नहीं कर सकते हैं, लेकिन जाहिर है कि अधिकांश कार्यक्षमता को VS2017 या प्लगइन्स में ले जाया गया है (नीचे देखें)।

विजुअल स्टूडियो 2017/2019 एक्सटेंशन

पूर्ववत अपरिवर्तित फ़ाइलों जैसी कुछ कार्रवाइयां एक में स्थानांतरित हो गई हैं

VS2017 के लिए विस्तार

VS2019 के लिए विस्तार

"पूर्ववत न करें" बटन स्थान:

अपरिवर्तित बटन स्थान को पूर्ववत करें

ज्ञात बग

आपको Control सोर्स कंट्रोल एक्सप्लोरर ’(और इसे खुला छोड़ना होगा) खोलना होगा ताकि लंबित परिवर्तन दृश्य के एक्शन मेनू में Unc पूर्ववत अपरिवर्तित’ प्रदर्शित हो। यहाँ रिपोर्ट किया गया

विंडोज शेल इंटीग्रेशन एक्सटेंशन

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

विंडोज़ शेल इंटीग्रेशन ठीक उसी तरह काम नहीं करता है जैसे पहले पॉवरटूल करता था, लेकिन मेरे लिए सबसे महत्वपूर्ण काम करता था।


मैंने इस सवाल पर गौर किया, कि वे इसे स्क्रिप्ट करना चाहते हैं, इसके लिए मेरे पास कोई हल नहीं है, मुझे डर है
Schwarzie2478

1
लिंक किए गए एक्सटेंशन को स्थापित करने के बाद मुझे VS2017 में "पूर्ववत अपरिवर्तित" विकल्प नहीं मिल सकता है। क्या मैं कुछ भुल गया ?
Erzékiel

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

2
@ Erzékiel विकल्प केवल तभी दिखाई देता है जब समाधान एक्सप्लोरर खुला और तैयार हो।
MatrixRonny

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

8

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

टीएफएस चेक-इन से पहले और बाद में फाइलों की सामग्री के एमडी 5 हैश की तुलना करके ऐसा करता है।

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

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

सौभाग्य,

मार्टिन।


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

@RobertWagner यदि आपके पास गेटेड बिल्ड है, तो पॉपअप अलर्ट मिलने पर आप रद्द कर सकते हैं (यदि यह समरूप फ़ाइल का पता लगाने पर गर्भपात नहीं करता है) तो आपको पहले बदलाव करना होगा।
Elaskanator

6

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


1
या तो रोबोकॉपी या वीसीएस का उपयोग करें, मिश्रण का उपयोग करना हमेशा असंगति देने वाला है। VCS से प्रत्येक मशीन को सीधे पॉप्युलेट करना बेहतर होगा।
रिचर्ड

4

Tfpt के लिए uu विकल्प के बारे में कुछ बिंदु हैं (अधिकांश अन्य उत्तरों में अनुशंसित) जो पहले मेरे लिए स्पष्ट नहीं थे। सबसे पहले, यह कमांड लाइन की सहायता है जिसे कमांड के साथ एक्सेस किया जा सकता हैtfpt uu /?

लंबित परिवर्तनों को पूर्ववत करता है। यदि लंबित परिवर्तन वाली वस्तु की स्थिति सर्वर पर समान है, तो परिवर्तन पूर्ववत है।

उपयोग: tfpt uu [/ changeet: changesetnum] [/ recursive] [/ noget] [filespec ...]

  • / changeet नवीनतम संस्करण के बजाय निर्दिष्ट बदलाव संस्करण में आइटम स्थिति के लिए कार्यस्थान की तुलना करें
  • filespec ... केवल निरर्थक परिवर्तनों के लिए सूचीबद्ध filespecs की जाँच करें
  • / पुनरावर्ती पूर्ण पुनरावृत्ति के साथ निर्दिष्ट filespecs की जाँच करें
  • / noget चेक करने से पहले न चलें

/ परिवर्तन विकल्प का उपयोग फ़ेकपेस या पुनरावर्ती के साथ नहीं किया जा सकता है।

अब मुझे अन्य उत्तरों में अनुशंसित कमांड को तोड़ने दें।

tfpt uu . /noget /recursive
  • tfpt uu निर्दिष्ट करता है कि हम 'पूर्ववत करें' आदेश का उपयोग करना चाहते हैं।
  • . इंगित करता है (मुझे लगता है) कि वर्तमान वर्किंग डायरेक्टरी का उपयोग फिल्मस्पेक के रूप में किया जाना चाहिए।
  • /noget यह सुनिश्चित करता है कि अपरिवर्तित फ़ाइलों को पूर्ववत करने से पहले 'नवीनतम संस्करण प्राप्त न करें'।
  • /recursiveयह सुनिश्चित करता है कि न केवल फिल्स्पेक पर विचार किया जाएगा, बल्कि सभी पुनरावर्ती बच्चे फ़ोल्डर और फ़ाइलों पर विचार करेंगे। यह फ़िलिस्पेक पर निर्भर लगता है - यदि कोई भी प्रदान नहीं किया जाता है तो पूरे कार्यक्षेत्र को संसाधित किया जाता है।

तो ऊपर से कमांड के बारे में ध्यान देने योग्य कुछ बातें हैं ...

  • यह कार्यशील निर्देशिका पर निर्भर है।
  • यह संपूर्ण कार्यक्षेत्र को संसाधित नहीं करता है।

मैंने पाया है कि निम्नलिखित कमांड मेरे लिए सबसे अच्छा काम करता है - यह पूरे कार्यक्षेत्र को संसाधित करेगा।

tfpt uu /noget

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


3

मैं ऊपर रे लायनफैंग के दृष्टिकोण को देख सकता हूं। वहाँ कोई टिप्पणी नहीं कर सकता क्योंकि मेरे पास प्रतिनिधि नहीं है। जबकि मुझे यह तरीका पसंद है क्योंकि टूल्स आदि में कोई बदलाव की आवश्यकता नहीं है ........

  1. अपने प्रोजेक्ट पर राइट-क्लिक करें
  2. पूर्ववत चेकआउट चुनें, फिर बस ठीक क्लिक करें, या जो कुछ भी पुष्टि बाकी है ...
  3. फिर, चेकआउट को पूर्ववत करते समय, उस फ़ाइल के लिए, जिसमें REAL परिवर्तन होता है, एक प्रॉम्प्ट आपको उस फ़ाइल के चेक आउट की पुष्टि करने के लिए कहेगा ... बस "No to All" पर क्लिक करें
  4. विजुअल स्टूडियो को पता चल जाएगा कि चेक आउट फाइल में बदलाव हुआ है या नहीं। विदित हो कि यह विधि उन जोड़ी गई फ़ाइलों को भी हटा देती है जिन्हें अभी तक TFS से चेक नहीं किया गया है ...

....... "नो टू ऑल" मारते हुए उस एप्रोच में एक समस्या है जो कुछ फाइलों को बरकरार रखती है जिन्हें संशोधित नहीं किया जाता है। यह अनमॉडिफाइड फ़ाइलों को अनडू करने जैसी कोई चीज़ लगती है जब तक कि यह पहली फ़ाइल को हिट न कर दे जिसे वास्तव में संशोधित किया गया है और फिर अनमॉडिफाइड फ़ाइलों के बाकी हिस्सों को अनदेखा करता है, अगर इससे कोई मतलब है। मैंने केवल एक बार इस प्रभाव को देखा है।

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


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

-20

जहां तक ​​मुझे समझ में आया, टीएफएस में यदि आप एक टीम प्रोजेक्ट की जांच करते हैं, तो पूरी परियोजना की जाँच की जाती है और आपके पास नियंत्रण नहीं होता है कि कौन सी फाइलें नीचे लाई जाती हैं। यदि आप कुछ फाइलों को चेकइन को रोकना चाहते हैं, तो आप उन्हें लॉक कर सकते हैं।

काम पर, हम सभी टीएफएस से नफरत करते हैं।


1
हम अलग-अलग फ़ाइलों की जाँच कर सकते हैं, और इसे लॉक करने से डेवलपर को इनकी जाँच करने की अनुमति नहीं मिलेगी।
रॉबर्ट वैगनर

5
वोट कम करने जा रहा था, लेकिन "काम पर, हम सभी टीएफएस से नफरत करते हैं।" इसे बचाया।
जेम्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.