Je cherche un moyen de rechercher un serveur Subversion entier.
J'ai déjà une pièce du puzzle à recherche dans un référentiel . Maintenant, je dois le faire pour chaque référentiel.
Je dois accéder à cette liste à partir d'un script Shell Unix (Perl, bash, etc.)
Je cherchais également à répertorier les référentiels dans SVN. J'ai fait quelque chose comme ça sur Shell Prompt:
~$ svn list https://www.repo.rr.com/svn/main/team/gaurav
Test/
Test2/
Test3/
Test4/
Test5/
Test6/
Si vous activez svn via Apache et une directive SVNParentPath, vous pouvez ajouter une directive SVNListParentPath On à votre emplacement svn pour obtenir une liste de tous les référentiels.
Votre conf Apache devrait ressembler à ceci:
<Location /svn>
DAV svn
SVNParentPath "/net/svn/repositories"
# optional auth stuff
SVNListParentPath On # <--- Add this line to enable listing of all repos
</Location>
Votre accès à SVN ne fonctionne-t-il pas comme un service Web? Lorsque j'accède au répertoire supérieur de mon serveur SVN, j'obtiens une page qui est essentiellement une table des matières de l'ensemble des œuvres. C'est une liste non ordonnée que je peux simplement parcourir.
EDIT: Voici comment je le ferais à partir de la ligne de commande:
wget http://user:password@svn-url/ -O - | grep \<li\>
Dans mon entreprise, ils n'ont pas configuré le serveur pour fournir une liste de référentiels, donc svn list
a travaillé pour un référentiel spécifique mais pas à un niveau supérieur pour répertorier tous les référentiels.
Cependant, ils ont installé FishEye qui vous donne une interface graphique répertoriant les référentiels https://www.atlassian.com/software/fisheye
C'est une option payante, donc ce n'est pas pour tout le monde, mais la fonctionnalité est sympa.
Parfois, vous souhaiterez peut-être vérifier l'horodatage pour savoir quand le dépôt a été mis à jour, pour obtenir ces informations pratiques, vous pouvez utiliser l'option svn -v (verbose) comme dans
svn list -v svn://123.123.123.123/svn/repo/path
Si vous connaissez Java, vous pouvez utiliser SvnKit pour parcourir, rechercher et Dieu sait quoi avec votre serveur Subversion.
Après cela, vous pouvez empaqueter votre programme et l'invoquer via une tâche Ant ou un script Shell.
C'est une solution assez "brutale", mais une fois que vous maîtrisez SvnKit, vous pouvez vraiment faire beaucoup de choses sympas.
Si votre serveur est Apache, vous devriez pouvoir le configurer pour voir la liste des référentiels avec viewvc - c'est la plus basique, d'autres interfaces plus complexes existent mais ce n'est pas votre objectif ici.
Dans certaines versions, ViewVC est désormais une option de l'installation standard, par exemple depuis Collabnet.
Edit : Peu importe mon idée précédente juste au-dessus, Peter a un moyen beaucoup plus simple d'envoyer la liste des dépôts.
De là, vous devrez:
Malheureusement, dans ce cas, je ne peux pas penser à quelque chose de plus simple.
Il y a des exemples sur SO sur la façon d'extraire du texte de pages HTML en Python , ce serait une bonne option puisque Python aussi a des liaisons pour SVN, pour effectuer la recherche dans le référentiel - vous pouvez toujours appeler svn
directement depuis Python si vous préférez.
Si Python n'est pas votre tasse de thé, vous devrez traiter cela différemment avec les outils GNU (wget, puis les outils d'analyse ou les packages existants - je peux ') t être d'une grande aide, Carl vous a donné plus de détails dans ce post).