Frage Suchen Sie im SVN-Repository nach einem Dateinamen


Wir haben ein Massenrepository für Code, der Tausende von Ordnern und Unterordnern enthält. Ich möchte unter diesem Repositor mit dem 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 im SVN-Repository ist, dafür möchte ich eine Suche im Stammordner von SVN durchführen, wo ich den Dateinamen cd.txt ablegen und den Befehl ausführen werde, checke ein jeder Ordner und wird das Ergebnis der Dateidetails anzeigen ....

Hoffnungsbedarf ist klar. Kannst du mir bitte dabei helfen?


76
2018-04-01 10:16


Ursprung


Antworten:


Wenn die Datei in Ihrer Arbeitskopie ist, dann wenn Sie Svn 1.5 verwenden:

svn list --depth infinity | grep <filename>

oder eine frühere Version von svn:

find . -name <filename> -not -path '*.svn*'

Wenn Sie die Datei im Verlauf suchen müssen (gelöscht oder verschoben):

svn log -v | less

und suche danach mit:

\<filename><return>

55
2018-04-01 10:30



Folgendes funktioniert für mich (SVN Version 1.4.6)

svn list -R <URL> | grep "<file_pattern>"

53
2017-09-20 12:08



Mit Zugriff auf den Repo selbst verwenden (d. H. Auf Ihrem Svn-Host-Dateisystem)

svnlook tree [path_to_repo] | grep [file_name]  

oder um alle Repos zu durchsuchen (wenn Sie mehrere Repos eingerichtet haben).

for i in \`ls [path_to_repos_dir]`; do echo $i; svnlook tree [path_to_repos_dir]/$i | grep -i [file_or_folder_name]; done 

die Option --full-paths gibt den vollständigen Pfad in der Datei an (falls gefunden)

Beispiel:

for i in `ls /u01/svn-1.6.17/repos`; do echo $i; svnlook tree --full-paths /u01/svn- 1.6.17/repos/$i | grep -i somefile.txt; done

Leiten Sie die Ausgabe in eine Datei um, wenn eine statische Kopie benötigt wird.
nimmt an, nix OS zu verwenden.


15
2017-09-02 13:35



svn list --depth infinity <your-repo-here> um eine Liste von Dateien im Repo zu erhalten, und dann svn cat um Inhalte zu bekommen. Du kannst hinzufügen --xml Schlüssel zu list Befehl, um das Parsen etwas einfacher zu machen.


12
2018-04-01 10:24



Kürzlich habe ich meine veröffentlicht Nützlichkeit um das Repository aufzulisten, ist das viel schneller als "svn ls --depth infinity". Hier sind die Benchmarks. Es ruft nur eine Funktion auf, die in der internen API von Subversion verfügbar ist, aber jetzt über eine Befehlszeile zugänglich ist.

Du kannst also rennen

$ svn-crawler <URL> | grep "<file_pattern>"

5
2018-03-18 13:55



Wenn Sie TortoiseSVN verwenden, können Sie dies versuchen, wenn Sie bereit sind, Project by Project zu sehen - funktioniert für mich:

  1. Erstellen Sie ein leeres Projekt unter der Top-Level-URL Ihres Repositorys und nennen Sie es BLANK
  2. Klicken Sie auf die Repo-URL im linken Bereich
  3. Auf der rechten Seite wählen Sie Ihr BLANK-Projekt und Ihr gewünschtes Projekt - sagen Sie Trunk
  4. Klicken Sie mit der rechten Maustaste, um das Browsermenü aufzurufen, und wählen Sie "URLs vergleichen". Abhängig von der Größe Ihres Repos kann das Laden einer Minute eine Weile dauern. Aber Sie erhalten Ihre gesamte Projektliste in einer "ready-to-search" -Liste.
  5. Geben Sie den Dateinamen oder eine andere Zeichenfolge in den Suchfilter ein

4
2017-11-15 21:54



Wenn Ihr Remote-Repository nicht riesig ist, dann ist eine einfache Methode: Sie können einen "Checkout" durchführen, um ein lokales Repository zu erhalten. Wenn Sie in Windows-Maschine sind, verwenden Sie "Suchen" oder Linux-Maschine verwenden Sie den Befehl "Suchen".


-1
2018-03-02 07:10