Wir haben ein Massen-Repository für Code, das Tausende von Ordnern und Unterordnern enthält. Ich möchte unter diesem Repositor mit Dateinamen oder mit einem Wort suchen.
Root folder
a\
b\
c\
d\
e\
f\ab\
f\ab\cd.txt
Ich möchte nach cd.txt suchen, weiß aber nicht, wo es sich im SVN-Repository befindet. Dazu möchte ich eine Suche im Stammordner von SVN durchführen, in den ich den Dateinamen cd.txt eingebe und den Befehl ausführe jeder Ordner und zeigt die Datei Details Ergebnis ....
Die Hoffnungsanforderung ist klar. Können Sie mir bitte dabei helfen?
Antworten:
Wenn sich die Datei in Ihrer Arbeitskopie befindet, verwenden Sie SVN 1.5:
oder eine frühere Version von svn:
Wenn Sie die Datei im Verlauf suchen müssen (gelöscht oder verschoben):
und suchen Sie danach mit:
quelle
... | select-string <filename>
als Ersatz für verwendengrep
.... | find "<filename>"
funktioniert die Befehlszeile auch als Ersatz für grep. HINWEIS : Die "sind um Dateinamen erforderlich.svn co --depth empty REPOURL RepoDir
,cd RepoDir
undsvn list --depth infinity
dann werden alle Dateipfade vom SVN - Server erhalten (möglicherweise Millionen von Zeilen produzieren , wenn Sie Millionen haben).Folgendes funktioniert für mich (SVN-Version 1.4.6)
quelle
Mit Zugriff auf das Repo selbst verwenden (dh auf Ihrem SVN-Host-Dateisystem)
oder um alle Repos zu durchsuchen (wenn Sie mehrere Repos eingerichtet haben).
Die Option --full-path gibt den vollständigen Pfad im Repo zur Datei an (falls gefunden).
Beispiel:
Leiten Sie die Ausgabe in eine Datei um, wenn eine statische Kopie erforderlich ist.
setzt die Verwendung von nix OS voraus.
quelle
svn list --depth infinity <your-repo-here>
um eine Liste der Dateien im Reposvn cat
zu erhalten und dann den Inhalt zu erhalten. Sie können--xml
demlist
Befehl einen Schlüssel hinzufügen , um das Parsen etwas zu vereinfachen.quelle
grep
Sie daran, zu verwenden, wenn Sie 1 Datei anzeigen möchten, insbesondere wenn Sie Tausende von Dateien im Repository haben, wie z. B. das OP. Es gibt auch einen--incremental
Modus, wenn Sie die Ausgabe mit einer späteren / früheren XML-Ausgabe verbinden müssen.Kürzlich habe ich mein Dienstprogramm veröffentlicht, um das Repository aufzulisten. Das ist viel schneller als der Ansatz "svn ls --depth infinity". Hier sind die Benchmarks . Es wird nur eine Funktion aufgerufen, die in der internen Subversion-API verfügbar ist, aber jetzt über eine Befehlszeile zugänglich ist.
So kannst du rennen
quelle
Wenn Sie TortoiseSVN verwenden, können Sie dies versuchen, WENN Sie bereit sind, Projekt für Projekt zu suchen - funktioniert für mich:
quelle
VisualSVN Server 4.2 unterstützt das Suchen von Dateien nach Namen in der Weboberfläche. Probieren Sie die neue Funktion auf dem Demo-Server aus .
Sie können VisualSVN Server 4.2.0 unter https://www.visualsvn.com/server/download/pre-release/ herunterladen . Weitere Informationen finden Sie in den Versionshinweisen unter https://www.visualsvn.com/server/download/ .
quelle
Wenn das Remote-Repository Ihres Unternehmens nicht sehr groß ist, können Sie auf einfache Weise Folgendes auschecken: Sie können ein "Checkout" durchführen, um ein lokales Repository abzurufen. Wenn Sie sich auf einem Windows-Computer befinden, verwenden Sie "Suchen" oder auf einem Linux-Computer den Befehl "Suchen".
quelle