tutorial - Busque en el repositorio SVN un nombre de archivo
tag svn (7)
Tenemos un repositorio masivo para el código que contiene miles de carpetas y subcarpetas, quiero buscar en este repositorio el nombre del archivo o una palabra.
Root folder
a/
b/
c/
d/
e/
f/ab/
f/ab/cd.txt
Quiero buscar cd.txt pero no sé dónde está en SVN Repository, para eso quiero realizar una búsqueda en la carpeta raíz de SVN donde pondré el nombre del archivo cd.txt y ejecutaré el comando, lo registraré cada carpeta y mostrará el resultado de los detalles del archivo ....
El requisito de esperanza es claro. Puedes por favor ayudarme en esto.
Con acceso al repositorio en sí mismo uso (es decir, en su sistema de archivos host svn)
svnlook tree [path_to_repo] | grep [file_name]
o para buscar todos los repos (si tiene una configuración de repositorio múltiple).
for i in /`ls [path_to_repos_dir]`; do echo $i; svnlook tree [path_to_repos_dir]/$i | grep -i [file_or_folder_name]; done
la opción --full-paths dará la ruta completa en el repositorio al archivo (si se encuentra)
ejemplo:
for i in `ls /u01/svn-1.6.17/repos`; do echo $i; svnlook tree --full-paths /u01/svn- 1.6.17/repos/$i | grep -i somefile.txt; done
redirigir la salida a un archivo si se necesita una copia estática.
asume el uso de nix OS.
Lo siguiente funciona para mí (svn versión 1.4.6)
svn list -R <URL> | grep "<file_pattern>"
Recientemente publiqué mi utility para listar el repositorio, que es mucho más rápido que el enfoque "svn ls --depth infinito". Aquí están los benchmarks . Simplemente llama a una función que está disponible en la API interna de Subversion, pero que ahora se puede acceder a través de una línea de comando.
Entonces puedes correr
$ svn-crawler <URL> | grep "<file_pattern>"
Si el archivo está en su copia de trabajo, entonces si está utilizando svn 1.5:
svn list --depth infinity | grep <filename>
o una versión anterior de svn:
find . -name <filename> -not -path ''*.svn*''
Si necesita encontrar el archivo en el historial (eliminado o movido):
svn log -v | less
y búscalo con:
/<filename><return>
Si está usando TortoiseSVN, puede probar esto SI está dispuesto a buscar Proyecto por Proyecto: funciona para mí:
- Crea un proyecto en blanco debajo de la URL de nivel superior de tu repositorio, llámalo EN BLANCO
- Haga clic en la URL Repo en el panel izquierdo
- En el panel de la derecha, seleccione su proyecto BLANK y su proyecto deseado - por ejemplo, tronco
- Haga clic derecho para abrir el menú del navegador y seleccione "Comparar URLs", dependiendo del tamaño de su repositorio, puede tardar un minuto en cargarse. Pero básicamente consigues toda tu lista de proyectos en una lista ''lista para buscar''.
- Ingrese su nombre de archivo u otra cadena en el filtro de búsqueda
Si su repositorio remoto no es enorme, entonces un método fácil es: puede hacer un "checkout" para obtener un repositorio local. Si está en la máquina de Windows usa "Buscar" o máquina de Linux, use el comando "Buscar".
svn list --depth infinity <your-repo-here>
para obtener una lista de archivos en el repositorio, y luego svn cat
para obtener los contenidos. Puede agregar la clave --xml
para list
comando para simplificar el análisis.