Есть ли способ найти в последней версии каждого файла в TFS определенную строку или регулярное выражение? Это, наверное, единственное, чего мне не хватает в Visual Source Safe ...
В настоящее время я выполняю Get Latest для всей кодовой базы и использую Windows Search, но это становится довольно болезненным, поскольку более 1 ГБ кода в 75 000 файлов.
РЕДАКТИРОВАТЬ: Пробовал упомянутые инструменты powertools, но опция «Поиск по шаблонам» отображается только для поиска по именам файлов, а не по содержимому.
ОБНОВИТЬ: Мы реализовали возможность настраиваемого поиска в существующей установке MOSS (Search Server).





Если вы установите TFS 2008 PowerTools, вы получите действие «Найти в системе управления версиями» в контекстном меню Team Explorer.
я думаю, что искать только имя файла / папки
@muerte, забавно, что их называют «электроинструментами». Некоторые сказали бы, что выполнение чего-то вроде отката - это «базовая функциональность». :-)
ну, конечно, можно сделать откат вручную, просто это не операция в один клик. Возможно, так и должно быть ..
-1 электроинструменты не ищут файл содержание, только имена файлов / папок.
Team Foundation Server 2015 (локальная версия) и Visual Studio Team Services (облачная версия) включают встроенную поддержку поиска по всему вашему коду и рабочим элементам.
Вы можете выполнять простой поиск по строкам, например foo, логические операции, такие как foo OR bar, или более сложные языковые вещи, такие как class:WebRequest.
Подробнее об этом можно прочитать здесь: https://www.visualstudio.com/en-us/docs/search/overview
См. Мой ответ ниже и проголосуйте за него;) Теперь это возможно с TFS 2015 с помощью подключаемого модуля Code Search. marketplace.visualstudio.com/items?itemName=ms.vss-code-sear ch
Поиск кода в настоящее время доступен только для Visual Studio Team Services. Поддержка Team Foundation Server находится в стадии разработки и будет включена в следующий выпуск.
Поиск кода теперь доступен в TFS 2017 или новее.
Если вы попытаетесь переключиться на версию этого документа 2015 года: «Запрошенная страница недоступна для Team Foundation Server 2015».
Мы создали решение для системы контроля версий Team Foundation Server (а не SourceSafe, как вы упомянули), подобное тому, что предлагает Грант; запланированный TF Get, Search Server Express. Однако фильтр IFilter, используемый для файлов C# (текстовых), не давал желаемых результатов, поэтому мы конвертируем исходные файлы в файлы .htm. Теперь мы можем добавить дополнительные метаданные к файлам, например:
Однако мы бы предпочли обработчик протокола для TFS Source Control и специальный IFilter исходного кода для гораздо более целевого решения.
Есть ли планы открыть исходный код преобразования .htm?
Эта надстройка утверждает, что обладает той функциональностью, которую, как мне кажется, вы ищете:
Извините, я не вижу, где он предлагает поиск внутри файлов?
На самом деле я скачал этот набор плагинов ранее, и он позволяет выполнять поиск только по автору, метке, дате и т. д., Но не в старых версиях файлов ...: \
Другое решение - использовать «ctrl + shift + F». Вы можете изменить местоположение поиска на локальный каталог, а не на решение или проект. Это просто заменит поиск на рабочем столе, и вам все равно нужно будет получить последний код, но это позволит вам оставаться в Visual Studio для выполнения поиска.
Не решает проблему поиска по версиям кода TFS.
Бесполезен для поиска содержимого, которое вы не загрузили. Можно также использовать grep / findstr.
Есть другое альтернативное решение, которое кажется более привлекательным.
Теперь, после всех описанных выше настроек, у вас есть несколько вариантов для клиента:
Обновлять: Я пошел по этому пути, и он отлично работает. Просто хотел добавить к этому.
Справочные ссылки:
Хорошо,
У TFS2008 Power Tools есть функция поиска файлов в нет. «Инструменты« Найти в системе управления версиями »предоставляют возможность находить файлы и папки в системе управления версиями по положение дел элемента или с помощью выражения подстановочный знак».
На CodePlex есть программа для Windows с этой функцией. Я только что установил и протестировал это, и он хорошо работает.
Он шелушащийся и медленный, но, кажется, делает то, что написано на банке
Я получаю сообщение об ошибке, подобное тому, которое получили эти люди по ссылке ниже. Кто-нибудь еще испытывает это? tfssearchcode.codeplex.com/workitem/32475
В моем случае помогло написание небольшой утилиты на C#. Ссылки, которые мне помогли - 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/}")); // one some servers you also need to add collection path (if it not the default collection)
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;
}
}
}
В настоящее время нет возможности сделать это из коробки, но есть предложение User Voice для его добавления: http://visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/2037649-implement-indexed-full-text-search-of-work-items
Хотя я сомневаюсь, что это так же просто, как щелкнуть переключателем, если бы все, кто просматривал этот вопрос, проголосовали за него, MS, вероятно, что-то реализовала бы.
Обновление: просто прочтите Блог Брайана Гарри, который показывает, что этот запрос находится на их радаре, а онлайн-версия Visual Studio имеет ограниченную поддержку поиска, где git используется как vcs: http://blogs.msdn.com/b/visualstudioalm/archive/2015/02/13/announcing-limited-preview-for-visual-studio-online-code-search.aspx. Исходя из этого, я думаю, будет справедливо сказать, что это всего лишь вопрос времени ...
Обновление 2: Теперь существует предоставленное Microsoft расширение Поиск кода, которое позволяет выполнять поиск как в коде, так и в рабочих элементах.
Теперь это возможно с TFS 2015 с помощью подключаемого модуля Code Search. https://marketplace.visualstudio.com/items?itemName=ms.vss-code-search
Поиск осуществляется через веб-интерфейс и не требует загрузки кода на локальный компьютер, что приятно.
Примечание. Поиск кода в настоящее время доступен только для Visual Studio Team Services. Поддержка Team Foundation Server находится в стадии разработки и будет включена в следующий выпуск.
Этот поиск ссылки на файл объясняет, как найти файл. Мне пришлось возиться с советами, чтобы заставить его работать.
В случае команды cd я выполнил команду cd, потому что искал файл tf.exe. Было проще просто начать с этого каталога стихов, добавляя весь путь. Теперь, когда я понимаю, как это работает, я бы использовал абсолютный путь в кавычках.
В случае поиска tf я начал с корня сервера с $/ и искал все файлы, которые заканчивались на sql, то есть *.sql. Если вы не хотите начинать с корня, используйте вместо этого "$/myproject/*.sql".
Ой! Это не решает поиск в файловой части вопроса, но мой поиск в Google привел меня сюда, чтобы найти файлы среди других ссылок.
Предполагая, что у вас есть Блокнот ++, часто упускают из виду функцию «Найти в файлах», которая работает очень быстро и включает фильтры, регулярные выражения, замену и все полезности N ++.
Хороший ответ, мертвая ссылка: microsoft.com/downloads/…