Búsqueda de repository SVN

¿Hay algún buen software que me permita buscar en mi repository SVN fragmentos de código? Encontré ‘Ojo de pez’ pero el costo es de 1.200 y está muy por debajo de mi presupuesto.

Si solo busca el nombre del archivo, use:

 svn list -R file:///subversion/repository | grep filename 

Windows:

 svn list -R file:///subversion/repository | findstr filename 

De lo contrario, finalice la búsqueda y realice la búsqueda en el sistema de archivos:

 egrep -r _code_ . 

Hay sourceforge.net/projects/svn-search .

También hay una aplicación de Windows directamente desde la casa SVN llamada SvnQuery disponible en http://svnquery.tigris.org

A partir de Subversion 1.8, puede usar la opción --search con svn log comando svn log . Tenga en cuenta que el comando no realiza búsquedas de texto completo dentro de un repository, solo considera los siguientes datos:

  • autor de la revisión ( svn:author propiedad no versionada del svn:author ),
  • fecha ( svn:date propiedad no versionada),
  • texto de mensaje de registro ( svn:log propiedad no versionada de svn:log ),
  • lista de rutas modificadas (es decir, rutas afectadas por la revisión en particular).

Aquí está la página de ayuda sobre estas nuevas opciones de búsqueda:

  If the --search option is used, log messages are displayed only if the provided search pattern matches any of the author, date, log message text (unless --quiet is used), or, if the --verbose option is also provided, a changed path. The search pattern may include "glob syntax" wildcards: ? matches any single character * matches a sequence of arbitrary characters [abc] matches any of the characters listed inside the brackets If multiple --search options are provided, a log message is shown if it matches any of the provided search patterns. If the --search-and option is used, that option's argument is combined with the pattern from the previous --search or --search-and option, and a log message is shown only if it matches the combined search pattern. If --limit is used in combination with --search, --limit restricts the number of log messages searched, rather than restricting the output to a particular number of matching log messages. 
  1. Crea el espejo git-svn de ese repository.
  2. Busque secuencias agregadas o eliminadas dentro de git: git log -S'my line of code' o lo mismo en gitk

La ventaja es que puede realizar muchas búsquedas de forma local, sin cargar el servidor y la conexión de red.

Este ejemplo canaliza el contenido completo del repository a un archivo, que luego puede buscar rápidamente nombres de archivo dentro de un editor:

 svn list -R svn://svn > filelist.txt 

Esto es útil si el repository es relativamente estático y desea realizar búsquedas rápidas sin tener que cargar todo repetidamente desde el servidor SVN.

Me gusta TRAC: este complemento podría ser útil para su tarea: http://trac-hacks.org/wiki/RepoSearchPlugin

Solo una nota, FishEye (y muchos otros productos de Atlassian) tienen una edición inicial de $ 10, que en el caso de FishEye te ofrece 5 repositorys y acceso para hasta 10 committers. El dinero va a la caridad en este caso.

http://www.atlassian.com/starter

Dolorosamente lenta (y crudamente implementada) pero una combinación de svn log y svn cat funciona si está buscando el historial de archivos individuales o pequeños repositorys:

 svn log filetosearch | grep '^r' | cut -f1 -d' ' | xargs -i bash -c "echo '{}'; svn cat filetosearch -'{}'" 

dará salida a cada número de revisión donde el archivo cambió y el archivo. Siempre puedes incluir cada revisión en un archivo diferente y luego grep para los cambios.

PD. ¡Votos masivos a cualquier persona que me muestre cómo hacer esto correctamente!

Si estás realmente desesperado, haz un volcado del repository (mira “svnadmin dump”) y luego grep a través de él. No es bonito, pero puede mirar alrededor de los resultados de la búsqueda para encontrar los metadatos que indican el archivo y la revisión, luego verifíquelos para verlos mejor.

No es una buena solución, sin duda, pero es gratis 🙂 SVN no proporciona ninguna función para buscar registros pasados ​​(o incluso archivos de registro pasados, AFAIK).

Muchos repositorys SVN son sitios HTTP “simplemente”, por lo que puede considerar buscar en una aplicación de búsqueda “rastreador web” que pueda apuntar a la raíz SVN y le proporcionará una funcionalidad básica. Actualizarlo probablemente sea un truco, tal vez algún cheque SVN en hackeo puede hacer cosquillas en el índice para descartar o reindexar los cambios sobre la marcha.

Solo pensando en voz alta.

hay krugle y koders, pero ambos son caros. Ambos tienen complementos ide para eclipse.

Empecé a usar esta herramienta

http://www.supose.org/wiki/supose

Funciona bien simplemente careciendo de una interfaz de usuario visual, pero es rápido y algo mantenido

// Editar: La herramienta ya fue mencionada en otra respuesta, así que dale todos los créditos a Kuryaki.

Acabo de encontrar SupoSE, que es una herramienta de línea de comandos basada en Java que escanea un repository para crear un índice y luego puede responder a ciertos tipos de consultas. Todavía estamos evaluando la herramienta, pero parece prometedor. Vale la pena mencionar que hace un índice completo de todas las revisiones, incluidos los archivos de código fuente y los formatos de oficina comunes.