2012-03-26 19 views
28

यह प्रश्न इसी प्रकार है: Find in Files: Search all code in Team Foundation Server हालांकि 4 साल पहले यह पूछा गया था। मैं TFS 2010 के बारे में विशेष रूप से पूछ रहा हूँ वी.एस. 2010.स्रोत नियंत्रण में टीएफएस 2010 और वीएस 2010 खोज कोड

माइक्रोसॉफ्ट अंततः वापस कोड के टुकड़े के लिए फाइलों की खोज को जैसे चाहें वे जिस तरह से दृश्य स्रोत में वापस सुरक्षित था के लिए चारों ओर हो गया है के साथ? यदि हां, तो इसे कैसे सक्षम करें और इसका उपयोग कैसे करें?

मैंने माइक्रोसॉफ्ट के पावर टूल्स में जोड़ने का प्रयास किया है। हालांकि इसमें एक खोज सुविधा है, यह खोज केवल फाइल नामों के लिए है और फ़ाइलों में सामग्री को देखने से अनदेखा करती है। :(

+0

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

+1

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

+0

यह * नाम बदल नहीं *। वे पूरी तरह से अलग उत्पाद हैं। सामान्य में बिल्कुल शून्य कोड है। –

उत्तर

26

मुझे एक ही समस्या थी और समाधान के दौरान यह धागा मिला। मैंने तब पाया कि यह कार्यक्षमता विजुअल स्टूडियो गैलरी में 'TFS Administrators Toolkit' नामक विजुअल स्टूडियो 2010 ऐड-ऑन में उपलब्ध है। ऐसा लगता है कि काम करता है!

MSDN लिंक:

TFS Administrators Toolkit for VS 2010

TFS Administrators Toolkit for VS 2012

TFS Administrators Toolkit for VS 2013

+1

विजुअल स्टडी 2013 के लिए, [वीएस 2013 के लिए टीएफएस प्रशासक टूलकिट] (https://visualstudiogallery.msdn.microsoft.com/33713c5d-31a3-44b3-ae94-3c413e6b21c7) – JohnC

1

मैं कुछ भी है कि यह कर देगा के बारे में पता नहीं कर रहा हूँ।

20 साल पहले की SourceSafe भंडारण दृष्टिकोण बहुत ही बुनियादी था, और डेटाबेस क्या हम अब संबंध के रूप में "छोटे" मात्रा तक ही सीमित थे डेटा के बीच। टीएफएस फाइल संस्करणों के बीच कॉम्पैक्ट मतभेदों को संग्रहीत करता है, और अब कोई भी "टेक्स्ट का बड़ा बड़ा हिस्सा" नहीं है, जो कोई भी आसानी से खोज सकता है।

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

यह तर्क दिया जा सकता है कि स्वचालन मॉडल के साथ, या यहां तक ​​कि केवल एक कंसोल ऐप tf.exe को बुलाता है, कोड की कुछ पंक्तियों को प्रत्येक फ़ाइल के सभी संस्करणों के माध्यम से पुन: सक्रिय करने के लिए लिखता है और एक RegEx लागू करता है अपेक्षाकृत मामूली होगा कार्य, यदि आपको वास्तव में ऐसी खोज लागू करने की आवश्यकता है।

+0

"और यह देखना मुश्किल नहीं है कि यह कभी भी एमएस प्राथमिकता सूची के शीर्ष तक क्यों नहीं पहुंच सकता है - खासकर जब वे अभी भी उपयोग योग्य लंबित चेक-इन विंडो जैसी मूलभूत सुविधाएं प्राप्त करने, उपकरण मर्ज करने, और उम्मीद है कि फाइलों का नाम बदलना (!) वीएस 11 के लिए काम कर रहे हैं। " - माइक्रोसॉफ्ट जितनी बड़ी कंपनी के साथ, छोटी चीजें बदली जाने में बहुत बल लगता है। ऐसा नहीं है कि एक बार छोटी फुर्तीली गति की नाव एक बार थी, अब यह एक विशाल क्रूज़-लाइनर है जो इसे अपनी दिशा बदलने के लिए बहुत सारी ऊर्जा लेता है। मैंने आपको +1 भी दिया। – DMCS

1

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

तब मेरे पास एक खोज फ़ंक्शन वाला एक वेबसाइट था जिसे टेक्स्ट में निहित फ़ाइलों के नाम वापस खींचने के लिए स्थितब कहा जाता था।

टीएफएस की सदस्यता है जो वेबसर्विसेज का आह्वान कर सकती है।

+0

आपने जो उत्तर दिया है वह एक महान काम है। आपकी जानकारी के लिए +1। – DMCS

5

कुछ भी अंतर्निहित नहीं है, और डेटाबेस स्तर पर ऐसा करना मुश्किल होगा क्योंकि TFS स्टोर पिछले संस्करणों से डेल्टा के रूप में फाइल करता है।

जिस तरह से मैं इसे देखता हूं, वहां दो व्यवहार्य विकल्प हैं, लेकिन दोनों कोड के "टिप" संशोधन के लिए केवल काम करते हैं। सबसे आसान तरीका है अपने सभी स्रोतों को "प्राप्त करें", फिर कमांड विंडो में findstr कमांड का उपयोग करें, या खोज करने के लिए Windows Grep जैसे कुछ का उपयोग करें।

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

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

+0

हमारे पास मेरी कंपनी में कई उत्पाद विकास टीम हैं। स्थानीय रूप से संग्रहीत उनमें से प्रत्येक से कोड को डाउनलोड और रखने के लिए व्यवहार्य नहीं है। यह स्थान उस स्थान के माध्यम से खोज कार्य करने के लिए बहुत साफ होगा जहां डेटा पहले ही संग्रहीत है। आपने जो जवाब दिया है वह कुछ बेहतरीन काम-आसपास के फिक्स हैं। आपकी जानकारी के लिए +1। – DMCS

1

यदि आप अपना खुद का समाधान रोल नहीं करना चाहते हैं, तो मैंने पिछली कंपनी में Krugle for TFS (केवल परीक्षण और मूल्यांकन) के साथ काम किया है और इसे एक बहुत अच्छा समाधान पाया है।

+0

धन्यवाद! यह कुछ ऐसा हो सकता है जो मैं अपने टीएफएस प्रशासकों को प्रस्तावित करता हूं। – DMCS

0

मैं पूरी लाइब्रेरी (नवीनतम संशोधन) देखें और इस PowerShell स्क्रिप्ट चलाएँ:

C:\Users\username>powershell 
Windows PowerShell 
Copyright (C) 2013 Microsoft Corporation. All rights reserved. 

PS C:\Users\username> cd C:\LocalDevelopment 
PS C:\LocalDevelopment> get-childitem -include *.* -rec | select-string -pattern "a string" > a_string.txt 

whi ch है: सी में सभी फ़ाइलों पर एक पुनरावर्ती खोज करें: \ a string "के लिए स्थानीय विकास (निश्चित रूप से वहां अपनी स्ट्रिंग जोड़ें) और परिणाम को टेक्स्ट फ़ाइल में आउटपुट करें।

0

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

मेरे योजना पहले tf dir उपयोग करने के लिए फ़ाइलों की एक सूची मिलता है, तो tf view का उपयोग फ़ाइलों सामग्री प्राप्त करने के लिए और अंत में स्ट्रिंग (या रेगुलर एक्सप्रेशन से) हम देख रहे लगाने के लिए Select-String करने के लिए सामग्री को खिलाने के लिए है।

आप के साथ शुरू कर सकते हैं:

tf dir /recursive $/ 

लेकिन उस सूची शायद बड़ा होने जा रहा है, इसलिए की तरह, एक छोटे से दायरे में अपनी खोज को सीमित करने की कोशिश:

tf dir /recursive $/some/path/*.cs 

अगला कदम है पिछले चरण के परिणामों को प्रारूप में रूपांतरित करें जिसे हम tf view में फ़ीड कर सकते हैं।

(tf dir /recursive $/) -join "+" -replace ":", "" -replace "\+\+", "`n" -split "`n" | %{ $arr = $_ -split "\+"; $arr | select -Skip 1 | %{ $arr[0] + '/' + $_ } } 

अब tf view में सूची जाने पाइप और फिर Select-String:

... | %{ $file = $_ ; if (tf view "$file" /console | Select-String "some string") { Write-Host $file } } 

मत भूलना बात यह है कि "some string" कहते हैं बदलने के लिए यहाँ एक powershell स्क्रिप्ट है कि है।

कुल मिलाकर, आपको मिलता है:

(tf dir /recursive $/) -join "+" -replace ":", "" -replace "\+\+", "`n" -split "`n" | %{ $arr = $_ -split "\+"; $arr | select -Skip 1 | %{ $arr[0] + '/' + $_ } } | %{ $file = $_ ; if (tf view "$file" /console | Select-String "some string") { Write-Host $file } } 

ओह, और भूल जाते हैं बात यह है कि अपने वास्तविक खोज क्वेरी के साथ "some string" कहते हैं बदलने के लिए नहीं है।