Nous avons un référentiel en vrac pour le code contenant des milliers de dossiers et sous-dossiers, je veux rechercher sous ce référentiel avec un 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 référentiel 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écutera la commande, vérifierai chaque dossier et affichera le résultat des détails du fichier ....
L'espoir est clair. Pouvez-vous m'aider s'il vous plaît à ce sujet.
Si le fichier est 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 devez trouver le fichier dans l'historique (supprimé ou déplacé):
svn log -v | less
et recherchez-le avec:
\<filename><return>
Ce qui suit fonctionne pour moi (svn version 1.4.6)
svn list -R <URL> | grep "<file_pattern>"
Avec accès au dépôt lui-même, utilisez (c'est-à-dire sur votre système de fichiers hôte svn)
svnlook tree [path_to_repo] | grep [file_name]
ou pour rechercher tous les référentiels (si vous avez plusieurs configurations de référentiels).
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 -path donnera le chemin complet du dépôt 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
rediriger la sortie vers un fichier si une copie statique est nécessaire.
suppose d'utiliser nix OS.
svn list --depth infinity <your-repo-here>
pour obtenir une liste des fichiers du référentiel, puis svn cat
pour obtenir le contenu. Vous pouvez ajouter --xml
touchez la commande list
pour simplifier l'analyse.
Récemment, j'ai publié mon tilitaire pour lister le référentiel, c'est beaucoup plus rapide que l'approche "svn ls --depth infinity". Voici les benchmarks . Il appelle simplement une fonction disponible dans l'API interne de Subversion, mais désormais accessible via une ligne de commande.
Vous pouvez donc courir
$ svn-crawler <URL> | grep "<file_pattern>"
Si vous utilisez TortoiseSVN, vous pouvez essayer ceci SI vous êtes prêt à regarder Project by Project - fonctionne pour moi: