SVN-Repository-Suche [geschlossen]

155

Gibt es eine gute Software, mit der ich mein SVN-Repository nach Codefragmenten durchsuchen kann? Ich habe 'FishEye' gefunden, aber die Kosten betragen 1.200 und liegen weit außerhalb meines Budgets.

John
quelle
6
Müssen Sie die Geschichte des Repos durchsuchen? Oder nur der Kopf?
Swilliams
4
Es gibt eine kostenlose Version von FishEye - www.atlassian.com/starter
David d C e Freitas
1
@ DavidFreitas keine freien Optionen jetzt
bahrep
Es gibt eine 10-Dollar-Version von FishEye: www.atlassian.com/software/starter/overview , @bahrep. Einmal geht alles an wohltätige Zwecke.
David d C e Freitas
1
Es gibt eine neue svn log --searchOption, die für jemanden nützlich sein kann, der nach einer einfachen Suche im Repository-Verlauf sucht.
Bahrep

Antworten:

68

Wenn Sie nur nach dem Dateinamen suchen, verwenden Sie:

svn list -R file:///subversion/repository | grep filename

Windows:

svn list -R file:///subversion/repository | findstr filename

Andernfalls checken Sie aus und führen die Dateisystemsuche durch:

egrep -r _code_ .
phil_w
quelle
3
Es mag nicht ganz offensichtlich sein, aber diese Befehle gelten für jede Methode des Zugriffs auf einen SVN-Server, nicht nur für Dateien: (z. B. SVN: und SVN + SSH: funktionieren auch)
Alex Marshall
2
//, Würde es Ihnen etwas ausmachen, für jedes von ihnen ein funktionierendes Beispiel zu liefern?
Nathan Basanese
1
OP wollte die Dateien durchsuchen, nicht nur Dateinamen. Beispiel für die Dateisystemsuche nicht sehr nützlich.
Erict
12

Update Januar 2020

VisualSVN Server 4.2 unterstützt das Suchen von Dateien und Ordnern in der Weboberfläche. Probieren Sie die neue Funktion in einem der Repositorys des Demoservers aus !

Lesen Sie die Versionshinweise zu Version 4.2 und laden Sie VisualSVN Server 4.2.0 von der Hauptdownloadseite herunter .

Geben Sie hier die Bildbeschreibung ein


Alte Antwort

Ab Subversion 1.8 können Sie die --searchOption mit svn logBefehl verwenden . Beachten Sie, dass der Befehl keine Volltextsuche in einem Repository durchführt, sondern nur die folgenden Daten berücksichtigt:

  • Autor der Revision (nicht svn:authorversioniertes Eigentum),
  • Datum (nicht svn:dateumgerechnetes Eigentum),
  • Protokollnachrichtentext (nicht svn:logversionierte Eigenschaft),
  • Liste der geänderten Pfade (dh Pfade, die von der jeweiligen Revision betroffen sind).

Hier ist die Hilfeseite zu diesen neuen Suchoptionen:

 If the --search option is used, log messages are displayed only if the
 provided search pattern matches any of the author, date, log message
 text (unless --quiet is used), or, if the --verbose option is also
 provided, a changed path.
 The search pattern may include "glob syntax" wildcards:
     ?      matches any single character
     *      matches a sequence of arbitrary characters
     [abc]  matches any of the characters listed inside the brackets
 If multiple --search options are provided, a log message is shown if
 it matches any of the provided search patterns. If the --search-and
 option is used, that option's argument is combined with the pattern
 from the previous --search or --search-and option, and a log message
 is shown only if it matches the combined search pattern.
 If --limit is used in combination with --search, --limit restricts the
 number of log messages searched, rather than restricting the output
 to a particular number of matching log messages.
bahrep
quelle
1
Diese Methode funktioniert schnell, sollte jedoch nicht zum Suchen nach Dateien verwendet werden. Da diese Suchoption nur die Liste der explizit geänderten Pfade in jeder Revision analysiert, können Sie Ordnerkopien (neuer Zweig aus Trunk erstellt) erstellen, in denen eine bestimmte Datei vorhanden ist, die von dieser Methode jedoch nicht aufgelistet wird.
Pieter-Jan Busschaert
@ Pieter-JanBusschaert In Ihrem Kommentar geht es um die Verwendung des Befehls svn log --search. Sehen Sie sich die aktualisierte Antwort zur neuen webui-basierten Suche an. Diese Einschränkung besteht nicht.
Bahrep
9
  1. Erstellen Sie einen git-svnSpiegel dieses Repositorys.
  2. Suchen Sie in git nach hinzugefügten oder entfernten Zeichenfolgen: git log -S'my line of code'oder ingitk

Der Vorteil ist, dass Sie viele Suchvorgänge lokal durchführen können, ohne die Server- und Netzwerkverbindung zu laden.

Vi.
quelle
8

In diesem Beispiel wird der gesamte Inhalt des Repositorys an eine Datei weitergeleitet, die Sie dann schnell in einem Editor nach Dateinamen suchen können:

svn list -R svn://svn > filelist.txt

Dies ist nützlich, wenn das Repository relativ statisch ist und Sie schnelle Suchvorgänge durchführen möchten, ohne wiederholt alles vom SVN-Server laden zu müssen.

Contango
quelle
4
Ich sollte beachten, dass es in meinem Fall notwendig war, httpals Protokoll ( svn list -R http://repo/svn/etc) zu verwenden.
Charles Wood
downvoted, weil OP die Dateien durchsuchen wollte, nicht die Dateinamen. Der Befehl svn list gibt nur die Dateinamen des Repositorys aus.
Erict
4

Ich mag TRAC - dieses Plugin könnte für Ihre Aufgabe hilfreich sein: http://trac-hacks.org/wiki/RepoSearchPlugin

Kai
quelle
Das sieht etwas vielversprechend aus ... ist aber nicht besonders einfach zu installieren. Ich kann nicht bestätigen, ob es mit Trac + VisualSVN Server funktioniert.
Kit Roed
4

Nur eine Anmerkung, FishEye (und viele andere Atlassian-Produkte) haben eine Starter-Edition im Wert von 10 US-Dollar, die Ihnen im Fall von FishEye 5 Repositories und Zugriff für bis zu 10 Committer bietet. Das Geld geht in diesem Fall an wohltätige Zwecke.

www.atlassian.com/starter

David d C e Freitas
quelle
Nicht länger? Ich sehe keine freien Optionen auf der Seite.
Bahrep
@bahrep, ich habe die Antwort aktualisiert, es sind jetzt 10 US-Dollar für wohltätige Zwecke, die effektiv "kostenlos" sind, wenn Sie darüber nachdenken.
David d C e Freitas
3

Schmerzhaft langsam (und grob implementiert), aber eine Kombination aus SVN-Protokoll und SVN-Katze funktioniert, wenn Sie den Verlauf einzelner Dateien oder kleiner Repositorys durchsuchen:

svn log filetosearch |
    grep '^r' |
    cut -f1 -d' ' |
    xargs -i bash -c "echo '{}'; svn cat filetosearch -'{}'" 

gibt jede Revisionsnummer aus, bei der die Datei geändert wurde, und die Datei. Sie können jede Revision jederzeit in eine andere Datei kopieren und dann nach Änderungen suchen.

PS. Massive Upvotes für alle, die mir zeigen, wie man das richtig macht!

Ken
quelle
3
Einfach benutzen git-svn. Git hat eine integrierte Suche nach Code im Commit-Verlauf. Sie müssen jedoch den gesamten Commit-Verlauf herunterladen, um ihn verwenden zu können git-svn.
Vi.
2

Wenn Sie wirklich verzweifelt sind, machen Sie einen Dump des Repos (siehe "svnadmin dump") und durchsuchen Sie es dann. Es ist nicht schön, aber Sie können sich in den Suchergebnissen umsehen, um die Metadaten zu finden, die die Datei und die Revision angeben, und sie dann für einen besseren Blick überprüfen.

Natürlich keine gute Lösung, aber kostenlos :) SVN bietet keine Funktion zum Durchsuchen früherer Checkins (oder sogar früherer Protokolldateien, AFAIK).

rmeador
quelle
1

Viele SVN-Repos sind "einfach" HTTP-Sites. Sie können sich also eine Standard-Such-App für "Webcrawling" ansehen, die Sie auf das SVN-Stammverzeichnis verweisen können und die Ihnen grundlegende Funktionen bietet. Das Aktualisieren wird wahrscheinlich ein Trick sein. Vielleicht kann ein SVN-Check-in-Hackery den Index kitzeln, um Änderungen zu verwerfen oder neu zu indizieren, wenn Sie fortfahren.

Ich denke nur laut nach.

Will Hartung
quelle
1
Dies ist wahrscheinlich keine gute Idee, da der damit verbundene Aufwand enorm wäre. Außerdem sind SVN-Server normalerweise keine regulären Webseiten, sondern ein SVN-Repo, das über Webdav verfügbar gemacht wird.
Torkildr
1

Es gibt Krugle und Koders, aber beide sind teuer. Beide haben ide Plugins für Eclipse.

Brendon-Van-Heyzen
quelle
2
Was ist mit Krugle Basic?
Bård
1

Ich habe angefangen, dieses Tool zu verwenden

http://www.supose.org/wiki/supose

Es funktioniert gut, nur ohne visuelle Benutzeroberfläche, ist aber schnell und etwas gepflegt

Kuryaki
quelle
1
Heutzutage (August 2012) scheint das Projekt ins Stocken geraten zu sein ...
anol
Im Dezember 2012 veröffentlichten sie etwas Neues (0.7.1)
sendmoreinfo
2
scheint verschwunden zu sein
fbstj
0

// Bearbeiten: Das Tool wurde bereits in einer anderen Antwort erwähnt, also gib Kuryaki alle Credits.

Ich habe gerade SupoSE gefunden , ein Java-basiertes Befehlszeilentool, das ein Repository durchsucht, um einen Index zu erstellen, und anschließend bestimmte Arten von Anfragen beantworten kann. Wir evaluieren das Tool noch, aber es sieht vielversprechend aus. Es ist erwähnenswert, dass es einen vollständigen Index aller Revisionen erstellt, einschließlich Quellcodedateien und gängiger Office-Formate.

jek
quelle