SVN Depo Arama [kapalı]


155

Kod snippet'leri için SVN deposumda arama yapmamı sağlayacak iyi bir yazılım var mı? 'FishEye' buldum ama maliyeti 1.200 ve benim bütçem dışında.


6
Repo tarihini araştırmanız mı gerekiyor? Yoksa sadece kafa mı?
williams

4
FishEye'nin ücretsiz bir sürümü var - www.atlassian.com/starter
David d C e Freitas

1
@DavidFreitas şimdi ücretsiz seçenek yok
bahrep

FishEye'nin 10 dolarlık bir sürümü var: www.atlassian.com/software/starter/overview , @bahrep. Bir kez, hepsi sadaka ilerler.
David d C e Freitas

1
Yeni bir svn log --searchseçenek var, basit depo geçmişi araması arayan biri için kullanışlı olabilir.
bahrep

Yanıtlar:


69

Yalnızca dosya adını arıyorsanız:

svn list -R file:///subversion/repository | grep filename

Pencereler:

svn list -R file:///subversion/repository | findstr filename

Aksi takdirde ödeme yapın ve dosya sistemi araması yapın:

egrep -r _code_ .

3
Tamamen açık olmayabilir, ancak bu komutlar sadece bir dosya değil, bir svn sunucusuna erişim için herhangi bir yöntem için geçerlidir: (örn. Svn: ve svn + ssh: ayrıca çalışır)
Alex Marshall

2
//, Bunların her biri için çalışan bir örnek sunmak ister misiniz?
Nathan Basanese

1
OP sadece dosya adlarını değil, dosyaları aramak istiyordu. dosya sistemi arama örneği çok yararlı değil.
erict


12

Güncelleme Ocak, 2020

VisualSVN Server 4.2, web arayüzünde dosya ve klasör bulmayı destekler. Demo sunucunun depolarından birinde yeni özelliği deneyin !

Sürüm 4.2 Sürüm Notları'na bakın ve ana indirme sayfasından VisualSVN Server 4.2.0'ı indirin .

resim açıklamasını buraya girin


Eski cevap

Subversion 1.8--searchsvn log ile başlayarak seçeneği komut ile kullanabilirsiniz . Komutun bir depo içinde tam metin araması yapmadığını, yalnızca aşağıdaki verileri dikkate aldığını unutmayın:

  • revizyonun yazarı ( svn:authorsürüm bilgisi olmayan mülk),
  • tarih ( svn:datesürüm bilgisi olmayan mülk),
  • günlük mesajı metni ( svn:logsürüm özelliği),
  • değiştirilen yolların listesi (yani, belirli bir düzeltmeden etkilenen yollar).

İşte bu yeni arama seçenekleriyle ilgili yardım sayfası:

 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.

1
Bu yöntem hızlı çalışır, ancak dosyaların varlığını aramak için kullanılmamalıdır. Bu arama seçeneği yalnızca her bir düzeltmedeki açıkça değiştirilen yolların listesini ayrıştırdığından, belirli bir dosyanın bulunduğu klasör kopyaları (bagajdan oluşturulan yeni dal) oluşturabilirsiniz, ancak bu yöntemle listelenmez.
Pieter-Jan Busschaert

@ Pieter-JanBusschaert Yorumunuz svn log --search komutunu kullanmakla ilgilidir. Yeni webui tabanlı arama hakkındaki güncellenmiş cevaba bakın. Bu sınırlaması yoktur.
bahrep


9
  1. Bu havuzun git-svnaynasını oluşturun .
  2. Git içine eklenebilir veya kaldırılabilir dizeleri arayın: git log -S'my line of code'ya aynıgitk

Avantajı, sunucuyu ve ağ bağlantısını yüklemeden yerel olarak birçok arama yapabilmenizdir.


8

Bu örnek, deponun tüm içeriğini bir dosyaya aktarır; daha sonra bir düzenleyicide dosya adlarını hızlı bir şekilde arayabilirsiniz:

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

Depo nispeten statik ise ve SVN sunucusundan her şeyi tekrar tekrar yüklemek zorunda kalmadan hızlı arama yapmak istiyorsanız bu yararlıdır.


4
Benim durumumda httpprotokol ( svn list -R http://repo/svn/etc) olarak kullanılması gerektiğine dikkat etmeliyim .
Charles Wood

indirildi, çünkü OP dosya adlarını değil dosyaları aramak istiyordu. Svn list komutu yalnızca deponun dosya adlarını atar.
erict


4

Sadece bir not, FishEye'nin (ve diğer birçok Atlassian ürününün) 10 $ 'lık Başlangıç ​​Sürümleri var, bu da FishEye durumunda size 5 depo ve 10'a kadar komisyoncuya erişim sağlıyor. Bu durumda para sadaka gidiyor.

www.atlassian.com/starter


Artık değil? Sayfada ücretsiz seçenekler göremiyorum.
bahrep

@bahrep, yanıtı güncelledim, şimdi 10 $ olan sadaka gider ki, eğer düşünürseniz etkili bir şekilde "özgür" olur.
David d C e Freitas

3

Acı yavaş (ve kabaca uygulanmış), ancak tek dosyaların veya küçük depoların geçmişini arıyorsanız svn log ve svn cat kombinasyonu çalışır:

svn log filetosearch |
    grep '^r' |
    cut -f1 -d' ' |
    xargs -i bash -c "echo '{}'; svn cat filetosearch -'{}'" 

dosyanın ve dosyanın değiştirildiği her bir düzeltme numarasını çıktılar. Her bir düzeltmeyi her zaman farklı bir dosyaya yerleştirebilir ve daha sonra değişiklikler için grep yapabilirsiniz.

PS. Bana bunu düzgün bir şekilde nasıl yapacağımı gösteren herkese büyük upvotes!


3
Sadece kullan git-svn. Git, tamamlama geçmişinde yerleşik kod arama özelliğine sahiptir. Ancak kullanmak için tüm taahhüt geçmişini indirmeniz gerekir git-svn.
Vi.

2

Gerçekten çaresizseniz, repo dökümü yapın ("svnadmin dökümü" ne bakın) ve sonra grep. Hoş değil, ancak dosyayı ve düzeltmeyi gösteren meta verileri bulmak için arama sonuçlarının etrafına bakabilir, ardından daha iyi bir görünüm için göz atabilirsiniz.

Emin olmak için iyi bir çözüm değil, ama ücretsiz :) SVN geçmiş checkin'leri (hatta geçmiş günlük dosyalarını, AFAIK) aramak için hiçbir özellik sağlamaz.


1

SVN depolarının birçoğu "basit" HTTP siteleridir, bu nedenle SVN köküne işaret edebileceğiniz ve size temel işlevsellik verecek bazı "web tarama" arama uygulamasından bakmayı düşünebilirsiniz. Güncelleme muhtemelen biraz hile olacaktır, belki de hackery'deki bazı SVN kontrolleri, değişiklikleri gidermek veya yeniden adlandırmak için dizini işaretleyebilir.

Sadece yüksek sesle düşünmek.


1
Bu büyük olasılıkla iyi bir fikir değildir, çünkü söz konusu ek yük büyük olacaktır. Ayrıca, SVN sunucuları genellikle normal web sayfaları değil, webdav aracılığıyla maruz kalan bir svn repo'dur.
torkildr

1

orada krugle ve koders ama her ikisi de pahalıdır. Her ikisinde de tutulma için ide eklentileri vardır.


2
Krugle Basic ne olacak?
Bård


0

// Düzenle: Araç başka bir cevapta daha önce belirtilmişti, bu yüzden Kuryaki'ye tüm kredileri ver.

Sadece bir dizin oluşturmak için bir havuzu tarayan ve daha sonra belirli türden sorguları yanıtlayabilen java tabanlı bir komut satırı aracı olan SupoSE bulundu . Hâlâ aracı değerlendiriyoruz ancak umut verici görünüyor. Kaynak kodu dosyaları ve yaygın ofis formatları da dahil olmak üzere tüm revizyonların tam bir dizinini oluşturduğunu belirtmek gerekir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.