Gibt es eine Möglichkeit, eine Volltextsuche in einem Subversion-Repository durchzuführen, einschließlich des gesamten Verlaufs?
Zum Beispiel habe ich eine Funktion geschrieben, die ich irgendwo verwendet habe, aber dann wurde sie nicht benötigt, also habe ich die Dateien gespeichert, aber jetzt muss ich sie wieder finden, um sie für etwas anderes zu verwenden. Das SVN-Protokoll sagt wahrscheinlich so etwas wie "nicht verwendetes Material entfernt", und es gibt eine Menge solcher Checkins.
Edit 2016-04-15: Bitte beachten Sie, dass hier unter dem Begriff "Volltextsuche" gefragt wird, ob die tatsächlichen Unterschiede im Festschreibungsverlauf und nicht Dateinamen und / oder Festschreibungsnachrichten durchsucht werden sollen . Ich weise darauf hin, weil die obige Formulierung des Autors dies nicht sehr gut widerspiegelt - da er in seinem Beispiel genauso gut nur nach einem Dateinamen und / oder einer Commit-Nachricht suchen könnte. Daher viele svn log
Antworten und Kommentare.
quelle
--search
Argument fürsvn log
Befehl. Siehe meine Antwort unter stackoverflow.com/a/17473516/761095svn log --search
führt keine Volltextsuche durch, wie von @rjmunro gefordert, sondern durchsucht nur Autor, Datum, Protokollnachricht und Liste der geänderten Pfade.Antworten:
quelle
apt-get install git-svn
.svn log
In Apache unterstützt Subversion 1.8 eine neue--search
Option . So können Sie die Protokollnachrichten des Subversion-Repository-Verlaufs durchsuchen, ohne Tools und Skripte von Drittanbietern zu verwenden.svn log --search
Sucht nach Autor, Datum, Protokollnachrichtentext und Liste der geänderten Pfade.Siehe SVNBook |
svn log
Befehlszeilenreferenz .quelle
Wenn Sie Windows ausführen, schauen Sie sich SvnQuery an . Es verwaltet einen Volltextindex von lokalen oder Remote-Repositorys. Jedes Dokument, das jemals in ein Repository übertragen wurde, wird indiziert. Sie können Google-ähnliche Abfragen über eine einfache Weboberfläche durchführen.
quelle
Ich verwende ein kleines Shellscript, aber dies funktioniert nur für eine einzelne Datei. Sie können dies natürlich mit find kombinieren, um weitere Dateien einzuschließen.
Wenn Sie wirklich alles durchsuchen möchten, verwenden Sie den
svnadmin dump
Befehl und durchsuchen Sie ihn .quelle
Der beste Weg, dies zu tun, ist mit weniger:
Sobald weniger Ausgabe erfolgt, können Sie
/
wie bei VIM auf die Suche klicken.Bearbeiten:
Laut dem Autor möchte er mehr als nur die Nachrichten und Dateinamen suchen. In diesem Fall müssen Sie das Ghetto zusammen mit etwas wie: hacken.
Sie können auch ersetzen
grep
oder etwas anderes, um die Suche für Sie durchzuführen. Wenn Sie dies in einem Unterverzeichnis des Repositorys verwenden möchten, müssen Siesvn log
die erste Revision erkennen, in der dieses Verzeichnis vorhanden war, und diese Revision anstelle von verwenden0
.quelle
Ich habe nach etwas Ähnlichem gesucht. Das Beste, was ich mir ausgedacht habe, ist OpenGrok . Ich habe noch nicht versucht, es umzusetzen, klingt aber vielversprechend.
quelle
Für diff können Sie die
--diff
Option verwendenVerwenden Sie dann Vim oder Nano oder was auch immer Sie verwenden möchten, und suchen Sie nach dem, wonach Sie suchen. Sie werden es ziemlich schnell finden.
Es ist kein ausgefallenes Skript oder etwas Automatisiertes. Aber es funktioniert.
quelle
Obwohl Sie nicht frei sind, können Sie sich Fisheye von Atlassian ansehen, die gleichen Leute, die Ihnen JIRA bringen. Es führt eine Volltextsuche gegen SVN mit vielen anderen nützlichen Funktionen durch.
http://www.atlassian.com/software/fisheye/
quelle
Ich suchte das Gleiche und fand Folgendes:
http://svn-search.sourceforge.net/
quelle
Ich bin gerade auf dieses Problem gestoßen und
hat den Job für mich gemacht. Hat die Revision des ersten Vorkommens zurückgegeben und die gesuchte Zeile zitiert.
quelle
Ich habe keine Erfahrung damit, aber SupoSE (Open Source, geschrieben in Java) ist ein Tool, das genau dafür entwickelt wurde.
quelle
svn log -l<commit limit> | grep -C<5 or more lines> <search message>
quelle
Normalerweise mache ich das, was Jack M sagt (benutze svn log --verbose), aber ich pfeife zu grep anstatt zu weniger.
quelle
less
Sie tatsächlich die Revision, das Datum usw. sehen können, anstatt nur die Zeile im Kommentar. Das ist normalerweise das, wonach ich suche.Ich habe dies als Cygwin-Bash-Skript geschrieben, um dieses Problem zu lösen.
Es ist jedoch erforderlich, dass sich der Suchbegriff derzeit in der Dateisystemdatei befindet. Für alle Dateien, die mit dem Dateisystem grep übereinstimmen, wird dann ein grep aller svn-Unterschiede für diese Datei ausgeführt. Nicht perfekt, sollte aber für die meisten Anwendungen gut genug sein. Hoffe das hilft.
/ usr / local / bin / svngrep
/ usr / local / bin / svnrevisions
quelle
Wenn Sie versuchen festzustellen, welche Revision für eine bestimmte Codezeile verantwortlich ist, suchen Sie wahrscheinlich nach:
Gutschrift: ursprüngliche Antwort
quelle
Ich bin auf dieses Bash-Skript gestoßen , habe es aber nicht ausprobiert.
quelle