90 votes

Recherche d'un nom de fichier dans le dépôt SVN

Nous avons un référentiel de code qui contient des milliers de dossiers et de sous-dossiers, je veux faire une recherche dans ce référentiel par nom de fichier ou par un mot.

Root folder
    a\
    b\
    c\
    d\
    e\
    f\ab\
    f\ab\cd.txt

Je veux rechercher cd.txt mais je ne sais pas où il se trouve dans le dépôt SVN, pour cela je veux effectuer une recherche dans le dossier racine de SVN où je mettrai le nom du fichier cd.txt et je lancerai la commande, elle vérifiera dans chaque dossier et affichera les détails du fichier résultat....

J'espère que l'exigence est claire. Pouvez-vous m'aider sur ce point ?

66voto

Marios V Points 486

Ce qui suit fonctionne pour moi (svn version 1.4.6)

svn list -R <URL> | grep "<file_pattern>"

62voto

lmop Points 633

Si le fichier se trouve dans votre copie de travail, alors si vous utilisez svn 1.5 :

svn list --depth infinity | grep <filename>

ou une version antérieure de svn :

find . -name <filename> -not -path '*.svn*'

Si vous avez besoin de retrouver le fichier dans l'historique (supprimé ou déplacé) :

svn log -v | less

et le rechercher avec :

\<filename><return>

20voto

Robert Iles Points 51

Si vous avez accès au repo lui-même, utilisez (c'est à dire sur votre système de fichiers svn host)

svnlook tree [path_to_repo] | grep [file_name]  

ou pour rechercher dans tous les dépôts (si vous avez configuré plusieurs dépôts).

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 

l'option --full-paths donne le chemin complet du fichier dans le repo (s'il est trouvé)

exemple :

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

rediriger la sortie vers un fichier si une copie statique est nécessaire.
suppose l'utilisation du système d'exploitation nix.

12voto

Anton Gogolev Points 59794

svn list --depth infinity <your-repo-here> pour obtenir une liste de fichiers dans le repo, puis svn cat pour obtenir le contenu. Vous pouvez ajouter --xml pour list pour simplifier un peu l'analyse.

6voto

Dmitry Pavlenko Points 3907

J'ai récemment publié mon service public pour lister le dépôt, c'est beaucoup plus rapide que l'approche "svn ls --depth infinity". Voici la liste des critères de référence . Il appelle simplement une fonction qui est disponible dans l'API interne de Subversion, mais qui est maintenant accessible via une ligne de commande.

Vous pouvez donc exécuter

$ svn-crawler <URL> | grep "<file_pattern>"

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X