web-dev-qa-db-de.com

SVN-Repository-Suche

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

154
John

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 Sie eine Dateisystemsuche durch:

egrep -r _code_ .
67
phil_w

Es gibt sourceforge.net/projects/svn-search .

Es gibt auch eine Windows-Anwendung namens SvnQuery direkt von der SVN-Startseite aus, die unter http://svnquery.tigris.org verfügbar ist

37
Elmar Weber

Ab Subversion 1.8 können Sie --search Option mit svn log Befehl . Beachten Sie, dass der Befehl keine Volltextsuche in einem Repository ausführt, sondern nur die folgenden Daten berücksichtigt:

  • autor der Überarbeitung (svn:author nicht versionierte Eigenschaft),
  • datum (svn:date nicht versionierte Eigenschaft),
  • protokollnachrichtentext (svn:log nicht versionierte Eigenschaft),
  • liste der geänderten Pfade (d. h. 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.
11
bahrep
10
Ben Noland
  1. Erstellen git-svn Spiegel dieses Repositorys.
  2. Suche nach hinzugefügten oder entfernten Zeichenketten in git: git log -S'my line of code' oder dasselbe in gitk

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

9
Vi.

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

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

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

8
Contango

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

4
Kai

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

www.atlassian.com/starter

4

Schmerzhaft langsam (und grob implementiert), aber eine Kombination aus svn log und svn cat 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, an der die Datei geändert wurde, sowie die Datei. Sie können jede Revision jederzeit in eine andere Datei verschieben und dann nach Änderungen suchen.

PS. Massive Upvotes an alle, die mir zeigen, wie man das richtig macht!

3
Ken

Wenn Sie wirklich verzweifelt sind, erstellen Sie einen Speicherauszug des Repos (siehe "svnadmin dump") und durchsuchen Sie ihn 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 anzeigen, und sie dann für eine bessere Darstellung überprüfen.

Sicher keine gute Lösung, aber sie ist kostenlos :) SVN bietet keine Funktion zum Durchsuchen früherer Eincheckvorgänge (oder sogar früherer Protokolldateien, AFAIK).

2
rmeador

Ich habe angefangen, dieses Tool zu verwenden

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

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

1
Kuryaki

Viele SVN-Repos sind "einfach" HTTP-Sites. Sie können sich also einige "Web-Crawling" -Suchanwendungen von der Stange ansehen, die Sie auf das SVN-Stammverzeichnis verweisen können und die Ihnen grundlegende Funktionen bieten. 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 gehen.

Ich denke nur laut nach.

1
Will Hartung

theres Krugle und Koders, aber beide sind teuer. Beide haben IDE-Plugins für Eclipse.

1

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

Just found SupoSE Dies ist ein Java) - basiertes Befehlszeilentool, das ein Repository durchsucht, um einen Index zu erstellen, und anschließend bestimmte Arten von Abfragen beantworten kann Das Tool wird evaluiert, sieht aber vielversprechend aus. Erwähnenswert ist, dass es einen vollständigen Index aller Revisionen einschließlich Quellcodedateien und gängiger Office-Formate erstellt.

0
jek