visual studio 2008 - texto - Buscar en archivos: busque todo el código en Team Foundation Server
visual studio code comparar codigo (12)
¿Hay alguna manera de buscar la última versión de cada archivo en TFS para una cadena específica o expresión regular? Esto es probablemente lo único que extraño de Visual Source Safe ...
Actualmente realizo un Get Latest en toda la base de código y uso Windows Search, pero esto se vuelve bastante doloroso con más de 1GB de código en 75,000 archivos.
EDITAR : Intentó las herramientas eléctricas mencionadas, pero la opción "Búsqueda de comodines" parece que solo busca nombres de archivos y no contenidos.
ACTUALIZACIÓN : Hemos implementado una opción de búsqueda personalizada en una instalación existente de MOSS (Servidor de búsqueda).
Actualmente no hay forma de hacerlo, pero hay una sugerencia de User Voice para agregarlo: http://visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/2037649-implement-indexed-full-text-search-of-work-items
Aunque dudo que sea tan simple como activar un interruptor, si todos los que han visto esta pregunta lo votaron, MS probablemente implementará algo.
Actualización: acaba de leer el blog de Brian Harry , que muestra esta solicitud como en su radar, y la versión en línea de Visual Studio tiene soporte limitado para buscar donde se usa git como vcs: http://blogs.msdn.com/b/visualstudioalm/archive/2015/02/13/announcing-limited-preview-for-visual-studio-online-code-search.aspx . A partir de esto, creo que es justo decir que es solo cuestión de tiempo ...
Bueno,
TFS2008 Power Tools no tiene una función de búsqueda de archivos. "Las herramientas Find in Source Control brindan la capacidad de localizar archivos y carpetas en el control de código fuente por el estado del elemento o con una expresión de comodín ".
Hay un programa de Windows con esta funcionalidad publicada en CodePlex . Acabo de instalar y probar esto y funciona bien.
En mi caso, escribir una pequeña utilidad en C # me ayudó. Enlaces que me han ayudado - http://pascallaurin42.blogspot.com/2012/05/tfs-queries-searching-in-all-files-of.html
¿Cómo enumerar los archivos de un proyecto de equipo usando 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;
}
}
}
Este complemento dice tener la funcionalidad que creo que buscas:
Esto ahora es posible a partir de TFS 2015 mediante el uso del complemento de Code Search
. marketplace.visualstudio.com/items?itemName=ms.vss-code-search
La búsqueda se realiza a través de la interfaz web y no requiere que descargue el código en su máquina local, lo cual es bueno.
Hay otra solución alternativa, que parece ser más atractiva.
- Configurar un servidor de búsqueda - podría ser cualquier máquina / servidor de Windows
- Configure un servicio de notificación TFS * (Bissubscribe) para obtener, eliminar y actualizar archivos cada vez que se realiza una verificación. Así que este es un servicio web que actúa como un oyente en el servidor TFS y actualiza / sincroniza los archivos y carpetas en el servidor de búsqueda. - esto mejorará drásticamente la precisión (búsqueda en vivo), y evitará la carga única de hacer actualizaciones periódicas
- Configure un servicio de indexación / búsqueda indexada de Windows en el servidor de búsqueda para la carpeta raíz
- Exponer un servicio web para devolver resultados de búsqueda
Ahora con toda la configuración anterior, tiene algunas opciones para el cliente:
- Configure una página web para llamar al servicio de búsqueda y formatee los resultados para mostrar en la página web; también puede integrar esta página web dentro del estudio visual (a través de una macro o un complemento)
- Cree una interfaz de cliente de Windows (winforms / wpf) para llamar al servicio de búsqueda y formatee los resultados y muéstrelos en la interfaz de usuario; también puede integrar esta herramienta de cliente dentro de Visual Studio a través de VSPackages o add-in
Actualización : hice esta ruta, y ha estado funcionando muy bien. Solo quería agregar a esto.
Enlaces de referencia:
Hemos configurado una solución para Team Foundation Server Source Control (no SourceSafe como usted menciona) similar a lo que sugiere Grant; TF programado, Search Server Express. Sin embargo, el IFilter utilizado para los archivos C # (texto) no daba los resultados que queríamos, por lo que convertimos los archivos fuente en archivos .htm. Ahora podemos agregar metadatos adicionales a los archivos tales como:
- Autor (lo definimos como la persona que revisó el archivo por última vez)
- Código de color (en nuestra lista de tareas pendientes)
- Cantidad de cambios que indican posibles problemas de diseño (en nuestra lista de tareas pendientes)
- Integre con VSTS IDE como la función SmartSearch de Koders
- etc.
Sin embargo, preferiríamos un manejador de protocolos para TFS Source Control, y un código fuente dedicado IFilter para una solución mucho más específica.
Otra solución es usar "ctrl + shift + F". Puede cambiar la ubicación de búsqueda a un directorio local en lugar de una solución o proyecto. Esto solo tomará el lugar de la búsqueda en el escritorio y aún necesitará obtener el último código, pero le permitirá permanecer dentro de Visual Studio para realizar su búsqueda.
Si instala TFS 2008 PowerTools, obtendrá una acción de "Buscar en el control de código fuente" en el menú de clic derecho del Explorador de equipos.
Suponiendo que tiene Notepad++ , una característica que a menudo se pierde es ''Buscar en archivos'', que es extremadamente rápido y viene con filtros, expresiones regulares, reemplazar y todos los extras de N ++.
Team Foundation Server 2015 (local) y Visual Studio Team Services (versión en la nube) incluyen soporte integrado para buscar en todo su código y elementos de trabajo.
Puede hacer búsquedas de cadenas simples como foo
, operaciones booleanas como foo OR bar
o cosas más complejas específicas del lenguaje como class:WebRequest
Puedes leer más sobre esto aquí: https://www.visualstudio.com/en-us/docs/search/overview
Esta búsqueda de un enlace de archivo explica cómo encontrar un archivo. Tuve que rebuscar con el consejo de hacerlo funcionar.
- cd "C: / Archivos de programa (x86) / Microsoft Visual Studio 12.0 / Common7 / IDE"
- tf dir "$ / *. sql" / recursivo / servidor: http://mytfsserver:8080/tfs
En el caso del comando cd, realicé el comando cd porque estaba buscando el archivo tf.exe. Era más fácil comenzar desde ese directorio y agregar la ruta completa. Ahora que entiendo cómo hacer que esto funcione, usaría la ruta absoluta entre comillas.
En el caso de la búsqueda tf, comencé en la raíz del servidor con $/
y busqué todos los archivos que terminaron con sql
es decir, *.sql
. Si no desea comenzar desde la raíz, entonces use "$/myproject/*.sql"
lugar.
Oh! Esto no resuelve la búsqueda en el archivo de la pregunta, pero mi búsqueda en Google me trajo aquí para encontrar archivos entre otros enlaces.