¿Hay alguna manera de realizar una búsqueda de texto completo de un repositorio de subversión, incluido todo el historial?
Por ejemplo, he escrito una característica que usé en algún lugar, pero luego no era necesaria, así que compré los archivos, pero ahora necesito encontrarla nuevamente para usarla en otra cosa. El registro svn probablemente dice algo así como "cosas no utilizadas eliminadas", y hay muchos registros como ese.
Editar 2016-04-15: Tenga en cuenta que lo que se pide aquí por el término "búsqueda de texto completo" es buscar las diferencias reales del historial de confirmación, y no nombres de archivo y / o mensajes de confirmación . Estoy señalando esto porque la frase del autor anterior no refleja muy bien, ya que en su ejemplo también podría estar buscando un nombre de archivo y / o un mensaje de confirmación. De ahí muchas de las svn log
respuestas y comentarios.
fuente
--search
argumentos para elsvn log
comando. Vea mi respuesta en stackoverflow.com/a/17473516/761095svn log --search
no realiza una búsqueda de texto completo como lo requiere @rjmunro, sino que solo busca el autor, la fecha, el mensaje de registro y la lista de rutas cambiadas.Respuestas:
fuente
apt-get install git-svn
.svn log
en Apache Subversion 1.8 admite una nueva--search
opción . Por lo tanto, puede buscar mensajes de registro del historial del repositorio de Subversion sin usar herramientas y scripts de terceros.svn log --search
busca en autor, fecha, texto del mensaje de registro y lista de rutas cambiadas.Ver SVNBook |
svn log
referencia de línea de comandos .fuente
Si está ejecutando Windows, eche un vistazo a SvnQuery . Mantiene un índice de texto completo de repositorios locales o remotos. Todos los documentos comprometidos con un repositorio se indexan. Puede hacer consultas similares a google desde una interfaz web simple.
fuente
Estoy usando un pequeño shellscript, pero esto solo funciona para un solo archivo. Por supuesto, puede combinar esto con buscar para incluir más archivos.
Si realmente desea buscar todo, use el
svnadmin dump
comando y grep a través de eso.fuente
La mejor forma en que he encontrado para hacer esto es con menos:
Una vez que se obtiene menos resultados, puede presionar
/
para buscar, como VIM.Editar:
Según el autor, quiere buscar más que solo los mensajes y los nombres de los archivos. En cuyo caso, se te pedirá que hackees el ghetto junto con algo como:
También puede sustituirlo
grep
u otra cosa para buscarlo. Si desea usar esto en un subdirectorio del repositorio, deberá usarlosvn log
para discernir la primera revisión en la que existió ese directorio y usar esa revisión en lugar de0
.fuente
He estado buscando algo similar. Lo mejor que se me ocurrió es OpenGrok . Todavía no he intentado implementarlo, pero parece prometedor.
fuente
para diff puedes usar la
--diff
opciónluego use vim o nano o lo que quiera usar, y haga una búsqueda de lo que está buscando. Lo encontrarás bastante rápido.
No es un script sofisticado ni nada automatizado. Pero funciona.
fuente
Si bien no es gratis, puedes echar un vistazo a Fisheye de Atlassian, la misma gente que te trae JIRA. Realiza búsquedas de texto completo contra SVN con muchas otras características útiles.
http://www.atlassian.com/software/fisheye/
fuente
Estaba buscando lo mismo y encontré esto:
http://svn-search.sourceforge.net/
fuente
Me encontré con este problema y
hizo el trabajo por mí Devolvió la revisión de la primera aparición y citó la línea que estaba buscando.
fuente
No tengo ninguna experiencia con él, pero SupoSE (código abierto, escrito en Java) es una herramienta diseñada para hacer exactamente esto.
fuente
svn log -l<commit limit> | grep -C<5 or more lines> <search message>
fuente
Por lo general, hago lo que dice Jack M (uso svn log --verbose) pero me dirijo a grep en lugar de menos.
fuente
less
usted realmente puedo ver la revisión, la fecha, etc. en lugar de solo la línea en el comentario. Eso es generalmente lo que estoy buscando de todos modos.Escribí esto como un script cygwin bash para resolver este problema.
Sin embargo, requiere que el término de búsqueda esté actualmente dentro del archivo del sistema de archivos. Para todos los archivos que coinciden con el sistema de archivos grep, se realiza un grep de todos los svn diffs para ese archivo. No es perfecto, pero debería ser lo suficientemente bueno para la mayoría de los usos. Espero que esto ayude.
/ usr / local / bin / svngrep
/ usr / local / bin / svnrevisions
fuente
En caso de que esté tratando de determinar qué revisión es responsable de una línea de código específica, probablemente esté buscando:
Crédito: respuesta original
fuente
Encontré este script de bash , pero no lo he probado.
fuente