Soru Bir dosya adı için SVN deposunda arama yapın


Kod için binlerce klasör ve alt klasör içeren bir toplu depo var, bu repositor altında dosya adıyla veya bir kelime ile arama yapmak istiyorum.

Root folder
    a\
    b\
    c\
    d\
    e\
    f\ab\
    f\ab\cd.txt

Ben cd.txt aramak istiyorum ama SVN Deposu nerede olduğunu bilmiyorum, ben cdnxt dosya adını koyacağım ve komutunu çalıştıracağım SVN kök klasöründe bir arama yapmak istiyorum, bunun için kontrol etmek istiyorum her klasör ve dosya detayları sonucunu gösterecektir ....

Umut gereksinimi açıktır. Bu konuda bana yardımcı olabilir misiniz?


76
2018-04-01 10:16


Menşei


olası kopyası Subversion geçmişini arama (tam metin) - bahrep
Ben bir kopya olduğunu sanmıyorum. Bu tarihi araştırmakla ilgili. Bu bir dosya aramakla ilgili. - Troy Daniels
Arama sunucusu tarafını gerçekleştirecek girebileceğiniz bir istemci tarafı komutu olduğunu umuyordum. Çalıştığım bu SVN repo, VPN üzerinden korkunç yanıt süreleri ve aktarım hızına sahip. Ne yazık ki, bu mümkün görünmüyor. - Patrick M


Cevaplar:


Dosya çalışma kopyanızdaysa, svn 1.5 kullanıyorsanız:

svn list --depth infinity | grep <filename>

veya svn'nin daha eski bir sürümü:

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

Dosyayı geçmişte bulmanız gerekiyorsa (silinmiş veya taşınmış):

svn log -v | less

ve bununla birlikte arayın:

\<filename><return>

55
2018-04-01 10:30



svn listesi - sonsuzluk iyi çalışır, pencerelerde tabii ki varsayılan olarak grep olmaz, sadece bir metin dosyasına döktüm ve bir metin editörü ile arandı: - Mandrake
Windows PowerShell'de kullanabilirsiniz ... | select-string <filename> yerine geçmek grep. - Marnix Klooster
Normal bir windows komut satırında ... | find "<filename>" aynı zamanda grep'in yerini alacak. NOT: "Dosya adı çevresinde gerekli. - Raystorm
Dosya benim çalışma kopyada ise, onu bulmak için svn'ye ihtiyacım yok. Repo'yu Anton ve Marios cevapları gibi nasıl arayacağınızı eklemelisiniz. Belki de bu sizin için bariz bir şeydi, ama basit eski ben için ligayı açıklayan cevaplarıydı. - Lieven Keersmaekers
Yapabilirsin svn co --depth empty REPOURL RepoDir, cd RepoDir ve svn list --depth infinity ve sonra tüm dosya yollarını SVN sunucusundan alın (milyonlarca satıra sahipseniz milyonlarca satır üretebilirsiniz). - Ivan Akcheurov


Aşağıdaki işler benim için (svn sürüm 1.4.6)

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

53
2017-09-20 12:08



Harika. Bu Kaplumbağa için çalışıyor. Pencerelerde: svn listesi -R myurl >> results.txt - 40-Love
Gerçekten iyi çalışıyor. Ayrıca "-depth sonsuzluğundan" daha fazla "-R" hatırlamak da çok daha kolay. - MPV


Repo'ya erişim ile birlikte kullanım (svn host dosya sisteminizde)

svnlook tree [path_to_repo] | grep [file_name]  

veya tüm reposları aramak için (mulitple repos kurulumunuz varsa).

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 

seçenek - tam yollar, dosyaya (varsa) repoda tam yolu verecektir

örnek:

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

Statik kopya gerekiyorsa çıktıya bir dosyaya yönlendirin.
nix işletim sistemi kullanmayı kabul eder.


15
2017-09-02 13:35



"Svnlook tree --full-paths <path_to_repo> | grep <filename>" kullanımı için +1. Bu, bir subversion repo dosyasında bir dosya araması yapmanın en hızlı yoludur. - Nick Grealy
yıldırım hızlı arama, çok yararlı. - Dustin Cook


svn list --depth infinity <your-repo-here> repodaki dosyaların bir listesini almak ve sonra svn cat İçeriği almak için Ekleyebilirsin --xml anahtarı list ayrıştırma işlemini biraz daha basit hale getirme komutu.


12
2018-04-01 10:24



Kullanmayı unutma grep Eğer 1 dosyayı görmek istiyorsanız, özellikle de depoda binlerce dosya varsa, OP gibi. Ayrıca, bir --incremental Daha sonra / daha önceki XML çıkışı ile çıktıya katılmanız gerekiyorsa modu. - trysis


Yakın zamanda yayınladım Yarar depoyu listelemek için "svn ls --depth sonsuzluk" yaklaşımından çok daha hızlıdır. İşte kriterler. Sadece Subversion dahili API'sinde bulunan, ancak şimdi bir komut satırı üzerinden erişilebilen bir işlevi çağırır.

Böylece koşabilirsin

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

5
2018-03-18 13:55





Eğer TortoiseSVN'yi kullanıyorsanız, Project'e Proje ile bakmak isteyip istemediğinizi deneyebilirsiniz - benim için çalışır:

  1. Havuz üst düzey URL'nizin altında boş bir proje oluşturun, BLANK olarak adlandırın
  2. Sol bölmedeki Repo URL'sini tıklayın
  3. Sağdaki bölmede BLANK projenizi ve istediğiniz projeyi seçin - örneğin
  4. Tarayıcı menüsünü açmak için sağ tıklayın ve 'URL'leri Karşılaştır' seçeneğini seçerek, repo'unuzun boyutuna bağlı olarak yüklenmesi bir dakika sürebilir. Ancak temel olarak tüm proje listenizi 'aramaya hazır' listesinde bulabilirsiniz.
  5. Arama filtrenize dosya adınızı veya diğer dizelerinizi girin

4
2017-11-15 21:54





Eğer uzak deponuz büyük değilse, o zaman kolay bir yöntem: Yerel bir depo almak için "ödeme" yapabilirsiniz. Eğer windows makinesinde iseniz, "Search" veya Linux makinesini "Find" komutunu kullanınız.


-1
2018-03-02 07:10