visual studio 2008 - फाइलों में खोजें: टीम फाउंडेशन सर्वर में सभी कोड खोजें




visual-studio-2008 search (8)

इस ऐड-इन का दावा है कि वह कार्यक्षमता है जो मुझे विश्वास है कि आप चाहते हैं:

टीम फाउंडेशन साइडकिक्स

क्या किसी विशिष्ट स्ट्रिंग या रेगेक्स के लिए टीएफएस में प्रत्येक फ़ाइल के नवीनतम संस्करण को खोजने का कोई तरीका है? यह शायद एकमात्र चीज है जिसे मैं विजुअल सोर्स सेफ से चूकता हूं ...

वर्तमान में मैं पूरे कोडबेस पर एक नवीनतम प्राप्त करता हूं और विंडोज सर्च का उपयोग करता हूं, लेकिन यह 75,000 फाइलों में 1 जीबी से अधिक कोड के साथ काफी दर्दनाक हो जाता है।

संपादित करें : पावरटोल का उल्लेख किया गया है, लेकिन "वाइल्डकार्ड सर्च" विकल्प केवल फाइलनामों को खोजता है, न कि सामग्री।

अद्यतन : हमने एक मौजूदा MOSS (खोज सर्वर) स्थापना में एक अनुकूलित खोज विकल्प लागू किया है।


एक और वैकल्पिक समाधान है, जो अधिक आकर्षक लगता है।

  1. एक खोज सर्वर सेटअप करें - कोई भी विंडोज मशीन / सर्वर हो सकता है
  2. चेक-इन होने पर फ़ाइलों को हर बार प्राप्त करने, हटाने, अपडेट करने के लिए एक TFS अधिसूचना सेवा * (Bissubscribe) सेट अप करें। तो यह एक वेब सेवा है जो टीएफएस सर्वर पर श्रोता की तरह काम करती है, और खोज सर्वर पर फ़ाइलों और फ़ोल्डरों को अपडेट / सिंक करता है। - यह सटीकता (लाइव सर्च) में नाटकीय रूप से सुधार करेगा, और आवधिक हो जाने के एक बार लोड से बच जाएगा
  3. मूल फ़ोल्डर के लिए खोज सर्वर पर एक अनुक्रमण सेवा / विंडोज अनुक्रमित खोज सेटअप करें
  4. खोज परिणामों को वापस करने के लिए एक वेब सेवा का पर्दाफाश करें

अब उपर्युक्त सेटअप के साथ, आपके पास क्लाइंट के लिए कुछ विकल्प हैं:

  1. खोज सेवा को कॉल करने के लिए एक वेब पेज सेटअप करें और परिणामों को वेबपृष्ठ पर दिखाने के लिए प्रारूपित करें - आप दृश्य वेब स्टूडियो के अंदर इस वेबपृष्ठ को भी एकीकृत कर सकते हैं (मैक्रो या एड-इन के माध्यम से)
  2. खोज सेवा को कॉल करने और परिणामों को प्रारूपित करने और उन्हें यूआई पर दिखाने के लिए एक विंडोज क्लाइंट इंटरफ़ेस (Winforms / wpf) बनाएं - आप VSPackages या ऐड-इन के माध्यम से दृश्य स्टूडियो के अंदर इस क्लाइंट टूल को एकीकृत भी कर सकते हैं

अद्यतन : मैं इस मार्ग पर गया था, और यह अच्छी तरह से काम कर रहा है। बस इसमें जोड़ना चाहता था।

संदर्भ लिंक:

  1. Bissubscribe.exe के बजाय इस टूल का उपयोग करें
  2. टीएफएस घटनाओं को संभालना
  3. टीम सिस्टम नोटिफिकेशन

टीम फाउंडेशन सर्वर 2015 (ऑन-प्रिमाइसेस) और विजुअल स्टूडियो टीम सर्विसेज (क्लाउड वर्जन) में आपके सभी कोड और कार्य आइटमों को खोजने के लिए अंतर्निहित समर्थन शामिल है।

आप foo , बूलियन ऑपरेशंस जैसे foo OR bar या अधिक जटिल भाषा-विशिष्ट चीजों जैसे class:WebRequest जैसे सरल स्ट्रिंग खोज कर सकते हैं

आप इसके बारे में यहां और अधिक पढ़ सकते हैं: https://www.visualstudio.com/en-us/docs/search/overview


ठीक है,

  1. TFS2008 पावर टूल्स में एक खोज-इन-फाइल्स फ़ंक्शन नहीं है। "स्रोत नियंत्रण उपकरण में खोजें आइटम की स्थिति या वाइल्डकार्ड अभिव्यक्ति के साथ स्रोत नियंत्रण में फ़ाइलों और फ़ोल्डरों का पता लगाने की क्षमता प्रदान करता है।"

  2. CodePlex पर पोस्ट की गई इस कार्यक्षमता के साथ एक विंडोज प्रोग्राम है। मैंने बस इसे स्थापित और परीक्षण किया और यह अच्छी तरह से काम करता है।


मेरे मामले में, सी # में एक छोटी उपयोगिता लिखने में मदद मिली। लिंक जो मेरी मदद की - http://pascallaurin42.blogspot.com/2012/05/tfs-queries-searching-in-all-files-of.html

Tfs api का उपयोग कर एक टीम प्रोजेक्ट की फ़ाइलों को कैसे सूचीबद्ध करें?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.TeamFoundation.Client;
using Microsoft.TeamFoundation.VersionControl.Client;
using Microsoft.TeamFoundation.Framework.Client;
using System.IO;

namespace TFSSearch
{
class Program
{
    static string[] textPatterns = new[] { "void main(", "exception", "RegisterScript" };  //Text to search
    static string[] filePatterns = new[] { "*.cs", "*.xml", "*.config", "*.asp", "*.aspx", "*.js", "*.htm", "*.html", 
                                           "*.vb", "*.asax", "*.ashx", "*.asmx", "*.ascx", "*.master", "*.svc"}; //file extensions

    static void Main(string[] args)
    {
        try
        {
            var tfs = TfsTeamProjectCollectionFactory
             .GetTeamProjectCollection(new Uri("http://{tfsserver}:8080/tfs"));

            tfs.EnsureAuthenticated();

            var versionControl = tfs.GetService<VersionControlServer>();


            StreamWriter outputFile = new StreamWriter(@"C:\Find.txt");
            var allProjs = versionControl.GetAllTeamProjects(true);
            foreach (var teamProj in allProjs)
            {
                foreach (var filePattern in filePatterns)
                {
                    var items = versionControl.GetItems(teamProj.ServerItem + "/" + filePattern, RecursionType.Full).Items
                                .Where(i => !i.ServerItem.Contains("_ReSharper"));  //skipping resharper stuff
                    foreach (var item in items)
                    {
                        List<string> lines = SearchInFile(item);
                        if (lines.Count > 0)
                        {
                            outputFile.WriteLine("FILE:" + item.ServerItem);
                            outputFile.WriteLine(lines.Count.ToString() + " occurence(s) found.");
                            outputFile.WriteLine();
                        }
                        foreach (string line in lines)
                        {
                            outputFile.WriteLine(line);
                        }
                        if (lines.Count > 0)
                        {
                            outputFile.WriteLine();
                        }
                    }
                }
                outputFile.Flush();
            }
        }
        catch (Exception e)
        {
            string ex = e.Message;
            Console.WriteLine("!!EXCEPTION: " + e.Message);
            Console.WriteLine("Continuing... ");
        }
        Console.WriteLine("========");
        Console.Read();
    }

    // Define other methods and classes here
    private static List<string> SearchInFile(Item file)
    {
        var result = new List<string>();

        try
        {
            var stream = new StreamReader(file.DownloadFile(), Encoding.Default);

            var line = stream.ReadLine();
            var lineIndex = 0;

            while (!stream.EndOfStream)
            {
                if (textPatterns.Any(p => line.IndexOf(p, StringComparison.OrdinalIgnoreCase) >= 0))
                    result.Add("=== Line " + lineIndex + ": " + line.Trim());

                line = stream.ReadLine();
                lineIndex++;
            }
        }
        catch (Exception e)
        {
            string ex = e.Message;
            Console.WriteLine("!!EXCEPTION: " + e.Message);
            Console.WriteLine("Continuing... ");
        }

        return result;
    }
}
}

यदि आप टीएफएस 2008 पावरटूल स्थापित करते हैं तो आपको टीम एक्सप्लोरर राइट क्लिक मेनू में "स्रोत नियंत्रण में खोजें" कार्रवाई मिल जाएगी।

TFS2008 पावर टूल्स


हमने ग्रांट के सुझावों के समान टीम फाउंडेशन सर्वर स्रोत नियंत्रण (जैसा कि आप उल्लेख करते हैं स्रोत स्रोत नहीं) के लिए एक समाधान स्थापित किया है; अनुसूचित टीएफ जाओ, खोज सर्वर एक्सप्रेस। हालांकि IFilter सी # फाइलों (टेक्स्ट) के लिए उपयोग किया गया था जो परिणाम हम नहीं चाहते थे, इसलिए हम स्रोत फ़ाइलों को .htm फ़ाइलों में कनवर्ट करते हैं। अब हम फाइलों में अतिरिक्त मेटा-डेटा जोड़ सकते हैं जैसे कि:

  • लेखक (हम इसे उस व्यक्ति के रूप में परिभाषित करते हैं जिसने अंतिम बार फ़ाइल में चेक किया था)
  • रंग कोडिंग (हमारी todo-list पर)
  • संभावित डिजाइन समस्याओं को इंगित करने वाले परिवर्तनों की संख्या (हमारी todo-list पर)
  • कोडर्स स्मार्टशर्च सुविधा जैसे वीएसटीएस आईडीई के साथ एकीकृत करें
  • आदि।

हालांकि हम टीएफएस स्रोत नियंत्रण के लिए एक प्रोटोकॉलधारक पसंद करेंगे, और एक अधिक स्रोत समाधान के लिए एक समर्पित स्रोत कोड IFilter पसंद करेंगे।


फ़ाइल लिंक के लिए यह खोज बताती है कि फ़ाइल कैसे खोजें। मुझे इसे काम करने के लिए सलाह के साथ मिलना पड़ा।

  1. सीडी "सी: \ प्रोग्राम फ़ाइलें (x86) \ माइक्रोसॉफ्ट विजुअल स्टूडियो 12.0 \ Common7 \ IDE"
  2. टीएफ डीआईआर "$ / * एसक्यूएल" / रिकर्सिव / सर्वर: http://mytfsserver:8080/tfs

सीडी कमांड के मामले में, मैंने सीडी कमांड किया क्योंकि मैं tf.exe फ़ाइल की तलाश में था। पूरे पथ को जोड़ना उस निर्देशिका छंद से शुरू करना आसान था। अब जब मैं समझता हूं कि यह काम कैसे करें, मैं उद्धरणों में पूर्ण पथ का उपयोग करूंगा।

टीएफ खोज के मामले में, मैंने $/ साथ सर्वर की जड़ पर शुरुआत की और मैंने sql यानी *.sql साथ समाप्त होने वाली सभी फाइलों की खोज की। यदि आप रूट पर शुरू नहीं करना चाहते हैं, तो इसके बजाय "$/myproject/*.sql" उपयोग करें।

ओह! यह प्रश्न के फ़ाइल भाग में खोज को हल नहीं करता है लेकिन मेरी Google खोज ने मुझे अन्य लिंक के बीच फ़ाइलों को खोजने के लिए यहां लाया।







code-search-engine