Ich suche nach einer Möglichkeit, einen ganzen Subversion-Server zu durchsuchen.
Ich habe bereits ein Teil des Puzzles zu Suche in einem Repository . Jetzt muss ich dies für jedes Repository tun.
Ich muss über ein Unix-Shell-Skript (Perl, Bash usw.) auf diese Liste zugreifen.
Ich habe auch versucht, Repositorys in SVN aufzulisten. Ich habe so etwas bei Shell Prompt gemacht:
~$ svn list https://www.repo.rr.com/svn/main/team/gaurav
Test/
Test2/
Test3/
Test4/
Test5/
Test6/
Wenn Sie svn über Apache und eine SVNParentPath -Direktive aktivieren, können Sie Ihrem svn-Speicherort eine SVNListParentPath On -Direktive hinzufügen, um eine Liste aller Repositorys abzurufen.
Deine Apache conf sollte ungefähr so aussehen:
<Location /svn>
DAV svn
SVNParentPath "/net/svn/repositories"
# optional auth stuff
SVNListParentPath On # <--- Add this line to enable listing of all repos
</Location>
Funktioniert Ihr Zugriff auf SVN nicht wie ein Webdienst? Wenn ich auf das oberste Verzeichnis meines SVN-Servers zugreife, erhalte ich eine Seite, die im Wesentlichen ein Inhaltsverzeichnis des gesamten Werks ist. Es ist eine ungeordnete Liste, die ich einfach durchsuchen kann.
EDIT: So würde ich das von der Kommandozeile aus machen:
wget http://user:[email protected]/ -O - | grep \<li\>
In meiner Firma wurde der Server nicht so konfiguriert, dass er eine Liste von Repositorys bereitstellt. Daher arbeitete svn list
Für ein bestimmtes Repository, jedoch nicht auf einer höheren Ebene, um alle Repositorys aufzulisten.
Sie haben jedoch FishEye installiert, wodurch Sie eine GUI mit den Repositorys erhalten https://www.atlassian.com/software/fisheye
Es ist eine kostenpflichtige Option, also nicht für jedermann, aber die Funktionalität ist gut.
Manchmal möchten Sie vielleicht den Zeitstempel überprüfen, um festzustellen, wann das Repo aktualisiert wurde. Um diese nützlichen Informationen zu erhalten, können Sie die Option svn -v (verbose) wie in verwenden
svn list -v svn://123.123.123.123/svn/repo/path
Wenn Sie sich in Java auskennen, können Sie SvnKit zum Durchsuchen und Suchen verwenden, und Gott weiß, was mit Ihrem Subversion-Server passiert.
Danach können Sie Ihr Programm packen und entweder über eine Ant-Task oder ein Shell-Skript aufrufen.
Es ist eine ziemliche "Brute Force" -Lösung, aber wenn Sie SvnKit beherrschen, können Sie wirklich viele coole Dinge tun.
Wenn Ihr Server Apache ist, sollten Sie in der Lage sein, ihn so zu konfigurieren, dass die Repository-Liste mit viewvc angezeigt wird. Dies ist die grundlegendste, andere komplexere Schnittstellen sind vorhanden, aber dies ist hier nicht Ihr Zweck.
In einigen Versionen ist ViewVC jetzt eine Option der Standardinstallation, beispielsweise von Collabnet.
Bearbeiten : Vergiss meine vorherige Idee, Peter hat eine viel einfachere Möglichkeit, die Repository-Liste zu senden.
Von dort aus müssen Sie:
Leider kann ich mir in diesem Fall nichts Einfacheres vorstellen.
Es gibt Beispiele für SO wie man Text aus HTML-Seiten in Python extrahiert, dies wäre eine gute Option, da Python auch hat Bindungen für SVN, um die Repository-Suche durchzuführen - Sie können svn
immer noch direkt aus Python) aufrufen, wenn Sie es vorziehen.
Wenn Python nicht Ihre Tasse Tee ist, müssen Sie das anders mit GNU tools (wget, dann Parsing-Tools oder vorhandene Pakete - ich kann ' Ich kann dir da nicht weiterhelfen, Carl gab dir in diesem Beitrag einige Details).