Znajdź w plikach: Przeszukaj cały kod na serwerze Team Foundation
Czy istnieje sposób, aby przeszukać najnowszą wersję KAŻDEGO pliku w TFS pod kątem określonego ciągu znaków lub wyrażenia regularnego? To chyba jedyna rzecz, której mi brakuje z Visual Source Safe...
Obecnie wykonuję Get Latest na całej bazie kodowej i używam Windows Search, ale robi się to dość bolesne z ponad 1GB kodu w plikach 75,000.
EDIT : próbowałem wymienionych powertools, ale opcja" Wildcard Search " pojawia się tylko do wyszukiwania nazw plików, a nie zawartość.
UPDATE : zaimplementowaliśmy niestandardową opcję wyszukiwania w istniejącej instalacji MOSS (Search Server).
12 answers
Team Foundation Server 2015 (lokalnie) i Visual Studio Team Services (wersja w chmurze) zawierają wbudowaną obsługę przeszukiwania całego kodu i elementów roboczych.
Możesz wykonywać proste wyszukiwanie ciągów, takie jak foo
, operacje logiczne, takie jak foo OR bar
lub bardziej złożone rzeczy specyficzne dla języka, takie jak class:WebRequest
Możesz przeczytać więcej na ten temat tutaj: https://www.visualstudio.com/en-us/docs/search/overview
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-06 07:02:18
Istnieje inne alternatywne rozwiązanie, które wydaje się być bardziej atrakcyjne.
- Konfiguracja serwera wyszukiwania-może to być dowolna maszyna/serwer z systemem windows
- Setup a TFS notification service* (Bissubscribe) aby uzyskać, usunąć, update files everytime a checkin zdarza się. Jest to więc serwis internetowy, który działa jak słuchacz na TFS serwer i aktualizuje / synchronizuje pliki i foldery na serwerze wyszukiwania. - to znacznie poprawi dokładność (wyszukiwanie na żywo) i uniknie jednorazowe obciążenie robienia okresowych getów
- Konfiguracja usługi indeksowania / windows wyszukiwanie zindeksowane na serwerze wyszukiwania do katalogu głównego
- wystawić serwis internetowy do powrotu wyniki wyszukiwania
Teraz przy wszystkich powyższych ustawieniach masz kilka opcji dla Klienta:
- Skonfiguruj stronę internetową do wywołania usługi wyszukiwania i sformatuj wyniki do wyświetlenia na stronie - możesz również zintegrować tę stronę wewnątrz visual studio (poprzez makro lub dodatek)
- Utwórz interfejs klienta windows(winforms / wpf)do wywoływania usługi wyszukiwania i formatowania wyników i wyświetlania ich w interfejsie użytkownika - można również zintegrować to narzędzie w visual studio za pomocą VSPackages lub add-in
Update : Pojechałem tą trasą i działa dobrze. Chciałem tylko dodać do tego.
Odnośniki:
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-10-31 02:45:34
Jeśli zainstalujesz TFS 2008 PowerTools, otrzymasz akcję "Znajdź w kontroli źródła" w menu Team Explorer prawym przyciskiem myszy.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-09-26 20:46:59
W moim przypadku pisanie małego narzędzia w C# pomogło. Linki, które mi pomogły - http://pascallaurin42.blogspot.com/2012/05/tfs-queries-searching-in-all-files-of.html
Jak wyświetlić listę plików projektu zespołowego przy użyciu interfejsu 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;
}
}
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:10:29
Stworzyliśmy rozwiązanie do kontroli źródeł serwera Team Foundation (nie SourceSafe, jak wspomniałeś) podobne do tego, co sugeruje Grant; zaplanowane TF Get, Search Server Express. Jednak IFilter używany dla plików C# (tekst) nie dawał pożądanych rezultatów, więc konwertujemy pliki źródłowe na .pliki htm. Możemy teraz dodać dodatkowe metadane do plików takich jak:
- Autor (definiujemy go jako osobę, która ostatnio sprawdzała w pliku)
- kodowanie kolorów (na naszej todo-list)
- Liczba zmian wskazujących potencjalne problemy projektowe (na naszej liście do zrobienia)
- integracja z funkcją VSTS IDE like Koders SmartSearch
- itd.
Wolelibyśmy jednak protokolhandler do kontroli źródeł TFS i dedykowany kod źródłowy IFilter dla znacznie bardziej ukierunkowanego rozwiązania.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-21 08:57:25
Okay,
TFS2008 elektronarzędzia do Nie mają funkcję find-in-files. "Narzędzia Find in Source Control umożliwiają zlokalizowanie plików i folderów w source control za pomocą statusu lub wyrażenia wildcard."
Na CodePlex znajduje się program Windows z tą funkcjonalnością. Właśnie zainstalowałem i przetestowałem to i działa dobrze.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-05-11 13:08:13
Jest to teraz możliwe od TFS 2015 za pomocą wtyczki Code Search
. https://marketplace.visualstudio.com/items?itemName=ms.vss-code-search
Wyszukiwanie odbywa się za pośrednictwem interfejsu internetowego i nie wymaga pobierania kodu na lokalną maszynę, co jest miłe.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-10 20:38:11
Innym rozwiązaniem jest użycie "ctrl + shift + F". Możesz zmienić lokalizację Wyszukiwania na katalog lokalny, a nie rozwiązanie lub projekt. To zajmie tylko miejsce Wyszukiwania na pulpicie i nadal będziesz musiał uzyskać najnowszy kod, ale pozwoli Ci to pozostać w Visual Studio, aby wykonać wyszukiwanie.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-12-17 20:48:18
Ten dodatek twierdzi, że ma funkcjonalność, której według mnie szukasz:
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-16 20:24:32
Obecnie nie ma możliwości zrobienia tego po wyjęciu z pudełka, ale jest sugestia głosowa użytkownika, aby go dodać: http://visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/2037649-implement-indexed-full-text-search-of-work-items{[2]
Chociaż wątpię, że jest to tak proste, jak przerzucenie przełącznika, jeśli wszyscy, którzy oglądali to pytanie głosowali za nim, MS prawdopodobnie wdrożyłby coś.
Update: wystarczy przeczytać Blog Briana Harry ' ego, który pokazuje tę prośbę jako będąc na ich radarze, a wersja Online Visual Studio ma ograniczone wsparcie dla wyszukiwania, gdzie git jest używany jako vcs: http://blogs.msdn.com/b/visualstudioalm/archive/2015/02/13/announcing-limited-preview-for-visual-studio-online-code-search.aspx myślę, że można powiedzieć, że to tylko kwestia czasu...
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-10-02 06:47:09
- cd "C:\Program Files(x86)\Microsoft Visual Studio 12.0\Common7 \ IDE"
- TF dir"$/*.sql " / recursive / server: http://mytfsserver:8080/tfs
W przypadku polecenia cd, wykonałem polecenie cd, ponieważ szukałem tf.plik exe. Łatwiej było zacząć od tego katalogu dodając cały / align = "left" / Teraz, gdy rozumiem, jak to działa, użyłbym ścieżki absolutnej w cudzysłowach.
W przypadku wyszukiwania tf, zacząłem od katalogu głównego serwera $/
i szukałem wszystkich plików, które zakończyły się sql
tj. *.sql
. Jeśli nie chcesz zaczynać od katalogu głównego, Użyj "$/myproject/*.sql"
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-09-24 01:33:51
Zakładając, że masz Notepad++, często brakowało funkcji "Znajdź w plikach", która jest niezwykle szybka i zawiera filtry, wyrażenia regularne, replace i wszystkie gadżety N++.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-03 10:47:33