Rechercher dans un référentiel SVN pour un nom de fichier

Nous avons un référentiel en vrac pour le code contient des milliers de dossiers et sous-dossiers, je veux rechercher sous ce repositionneur avec le nom de fichier ou avec 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 repository SVN, pour cela je veux effectuer une recherche sur le dossier racine de SVN où je mettrai le nom de fichier cd.txt et exécuterez la commande, archivera chaque dossier et affichera le résultat des détails du fichier ….

Espérer que l’exigence est claire. Pouvez-vous m’aider s’il vous plaît?

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

 svn list --depth infinity | grep  

ou une version antérieure de svn:

 find . -name  -not -path '*.svn*' 

Si vous devez trouver le fichier dans l’historique (supprimé ou déplacé):

 svn log -v | less 

et le chercher avec:

 \ 

Ce qui suit fonctionne pour moi (svn version 1.4.6)

 svn list -R  | grep "" 

Avec l’access au repository lui-même, utilisez (c.-à-d. Sur votre système de fichier hôte svn)

 svnlook tree [path_to_repo] | grep [file_name] 

ou pour rechercher tous les repos (si vous avez une configuration de repo multiple).

 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-Chemins donnera le chemin complet dans repo au fichier (si 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 

redirect la sortie vers un fichier si une copie statique est nécessaire.
suppose l’utilisation de nix OS.

svn list --depth infinity pour obtenir une liste de fichiers dans le repo, puis svn cat pour obtenir le contenu. Vous pouvez append la clé --xml à la commande list pour simplifier l’parsing.

Récemment, j’ai publié mon utilitaire pour répertorier le référentiel, ce qui est beaucoup plus rapide que l’approche “svn ls –depth infinity”. Voici les repères . Il appelle simplement une fonction disponible dans l’API interne de Subversion, mais désormais accessible via une ligne de commande.

Donc, vous pouvez courir

 $ svn-crawler  | grep "" 

Si vous utilisez TortoiseSVN, vous pouvez essayer ceci si vous êtes prêt à regarder Project by Project – fonctionne pour moi:

  1. Créez un projet vide sous l’URL de niveau supérieur de votre référentiel, appelez-le BLANK
  2. Cliquez sur l’URL Repo dans le volet gauche
  3. Sur le volet de droite, sélectionnez votre projet BLANK et votre projet souhaité – disons trunk
  4. Faites un clic droit pour faire apparaître le menu du navigateur et sélectionnez «Comparer les URL». Selon la taille de votre repository, le chargement peut prendre une minute. Mais vous obtenez essentiellement la liste complète de vos projets dans une liste «prête à rechercher».
  5. Entrez votre nom de fichier ou une autre chaîne dans le filtre de recherche

Si votre repository distant n’est pas énorme, la méthode la plus simple est la suivante: vous pouvez effectuer un “checkout” pour obtenir un référentiel local. Si vous êtes dans une machine Windows, vous utilisez “Recherche” ou une machine Linux avec la commande “Rechercher”.