Подтвердить что ты не робот

TFS 2010 и VS 2010 в коде контроля источника

Этот вопрос похож на: Найти в файлах: Искать весь код в Team Foundation Server Однако он был задан 4 года назад. Я спрашиваю конкретно о TFS 2010 с VS 2010.

Разве Microsoft наконец-то обошла добавить поиск файлов для фрагментов кода, как будто они вернулись в Visual Source Safe? Если да, как включить его и использовать?

Я попытался добавить в Microsoft Power Tools. Хотя у него есть функция поиска, поиск относится только к именам файлов и игнорирует просмотр содержимого в файлах.: (

4b9b3361

Ответ 1

У меня была такая же проблема, и я нашел эту нить, ища решение. Затем я обнаружил, что эта функциональность доступна в надстройке Visual Studio 2010 под названием " TFS Administrators Toolkit 'в галерее Visual Studio. Кажется, что это работает!

Ссылки MSDN:

Инструментарий администраторов TFS для VS 2010

Инструментарий администраторов TFS для VS 2012

Инструментарий администраторов TFS для VS 2013

Ответ 2

Нет ничего встроенного, и было бы трудно сделать это на уровне базы данных из-за того, что TFS хранит файлы как дельта из предыдущих версий.

Как я вижу это, есть два жизнеспособных варианта, но оба они работают только для пересмотра кода. Самый простой способ - "получить" весь ваш источник, затем использовать либо команду findstr в командном окне, либо использовать что-то вроде Windows Grep, чтобы выполнить поиск.

В качестве альтернативы вы могли бы сделать то, что сделал один из наших более предприимчивых разработчиков, и использовать Lucene для индексации вашего кода, а затем добавить хороший результаты вокруг. У нас есть эта настройка для регулярного получения нашей основной ветки и ветки DEV, поэтому мы можем получить результаты поиска в режиме реального времени.

Есть также такие продукты, как CAST, которые влияют на анализ, и позволяют выполнять некоторую степень поиска, но в этот момент, вы ищете возможность сбросить некоторые приличные золотые кусочки, чтобы получить продукт.

Ответ 3

Я не знаю ничего, что сделает это.

Подход хранилища SourceSafe 20 лет назад был очень простым, и базы данных были ограничены тем, что мы теперь будем рассматривать как "крошечные" объемы данных. TFS сохраняет компактные различия между версиями файлов, и больше нет "большого большого куска текста", который каждый может обычным образом искать.

Любой такой инструмент должен получить каждую версию каждого файла, чтобы перестроить исходный текст для поиска, который задержит ваш сервер в течение нескольких дней или недель. Добавьте накладные расходы на тестирование для создания надежного инструмента и вероятность того, что многие люди действительно нуждаются в нем, и нетрудно понять, почему он, возможно, никогда не достигнет вершины списка приоритетов MS, особенно когда они все еще работают над получением основных функций, таких как удобное окно ожидающих проверок, инструменты слияния и, надеюсь, переименование файлов (!), работающих на VS11.

Можно утверждать, что с помощью модели автоматизации или даже просто консольного приложения, вызывающего tf.exe, для написания нескольких строк кода для повторения всех версий каждого файла и применения RegEx будет относительно тривиальная задача, если вам действительно нужно применить такой поиск.

Ответ 4

Я знаю, как я это делал много лет назад, используя менеджер версий PVCS. У меня был триггер по проверке и добавлен архив. Это поставило в очередь рабочий процесс, который вытащил бы исходный код и использовал команду cygwin/unix updatedb для создания индекса всех файлов. Построение базы данных будет идти в базу данных temp, а затем быстро сменит считываемую базу данных сразу после ее создания.

Затем у меня появился веб-сайт с функцией поиска, которая вызывала localb, чтобы отменить имена файлов, содержащих текст.

TFS имеет подписки, которые могут вызывать webserivces.

Ответ 5

Если вы не хотите откатывать свое собственное решение, я ранее работал с Krugle для TFS (только для тестирования и оценки) в предыдущей компании и нашел, что это очень хорошее решение.

Ответ 6

Я просматриваю всю библиотеку (последняя версия) и запускаю эту Powershell script:

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

который: Рекурсивный поиск по всем файлам в c:\LocalDevelopment для "строки" (добавьте туда свою строку), и выведите результаты в текстовый файл.

Ответ 7

TFS не предоставляет эту функцию из коробки, но вы можете использовать Powershell для объединения существующих функций TFS, чтобы получить то, что вам нужно.

Мой план состоит в том, чтобы сначала использовать tf dir получить список файлов, а затем использовать tf view для получения содержимого файлов и, наконец, передать содержимое в Select-String, чтобы найти строку (или регулярное выражение), которую мы ищем.

Вы можете начать с:

tf dir /recursive $/

но этот список, вероятно, будет огромным, поэтому попробуйте ограничить поиск небольшим объемом, например:

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

Следующий шаг - преобразовать результаты предыдущего шага в формат, который мы можем затем передать в tf view. Ниже приведена статья powershell script, которая делает следующее:

(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".

В целом вы получаете:

(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", с вашим фактическим поисковым запросом.