Bir Github projesi içindeki arama kodu


272

Bir Github projesinin kodunun içindeki bir şeyi şaşırtmanın bir yolu var mı?

Kaynağı çekip yerel olarak şaşırtabilirdim, ancak web arayüzü veya 3. taraf bir alternatif aracılığıyla mümkün olup olmadığını merak ediyordum.

Fikirler?


Ayrıca checkout code.ohloh.net :)
obimod

Java / Scala depoları için Codota Semantic Code Search'ü
drorw

Yanıtlar:


255

Ocak 2013 Güncellemesi: Yepyeni bir arama geldi! , elasticsearch.org'a dayalı :

Yakut repo içinde bir istatistik arayışı olarak ifade edilecek stat repo:ruby/rubyve şimdi TM çalışacaktır .
(repo adı büyük / küçük harfe duyarlı değildir: test repo:wordpress/wordpressile aynı döndürür test repo:Wordpress/Wordpress)

resim açıklamasını buraya girin

Verecek:

resim açıklamasını buraya girin

Ve takipçilere veya çatallara dayanan başka birçok arama örneğiniz var veya ...


Temmuz 2012 Güncellemesi (Lucene aramasının eski günleri ve bozuk GUI ile birlikte kötü kod dizine ekleme, arşiv için burada tutuldu):

Arama ( SolrQuerySyntax tabanlı ) artık daha izin vericidir ve " " Her Şey " varsayılan arama seçicisini Invalid search query. Try quoting it.kullanırken korkunç" "gitmiştir :)

(Sanırım , hedeflerinden birinde "tüm GitHub özellikleri için geliştirilmiş arama deneyimlerini hackleme" olan Tim Pease'den daha fazlasını yapabiliriz ve bu Yığın Taşması sorusundan bahsetmiştim şu anda ;))

İşte yakut kod içinde bir grep bir örnek: depoları ve kullanıcıları, ama aynı zamanda ilk etapta aramak istediklerimi arayacak: kod!

GitHub daha uygun arama sonuçları


İlk sorunun cevabı ve eski sayının gösterimi (Eylül 2012 => Mart 2012)

Sen kullanabilirsiniz gelişmiş arama GitHub formunu :

  • Seç Code, Repositoriesveya Usersaçılır menüden ve
  • söz konusu arama türü için listelenen ilgili önekleri kullanın .

Örneğin repo:username/repo-name, aramayı bir kod havuzuyla sınırlamak için yönergeyi kullanın .
İlk " Advanced Search" sayfası bölümü içerir:

kod Arama:

Kod arama, GitHub'da herkese açık olarak barındırılan tüm kodları arar. Ayrıca şunlara göre filtreleyebilirsiniz:

  • dil language:
  • havuz adı (kullanıcı adı dahil) repo:
  • dosya yolu path:

Dolayısıyla, " Code" arama seçiciyi seçerseniz, bir repo içindeki bir metni selamlama sorgunuz işe yarayacaktır:

İyi Arama seçici


Ne inanılmaz yararsız GitHub olmasıdır:

  • doğru arama seçiciyi (burada " Code") koymayı unutursanız bir hata mesajı alırsınız:
    " Invalid search query. Try quoting it."

Kod doldurucu için yanlış seçici

  • hata mesajı size hiç yardımcı olmaz.
    Hiçbir " quoting it" tutarı sizi bu hatadan kurtarmaz.

  • bu hata mesajını aldığınızda, arama seçicileri (" Repositories", " Users" veya " Language") ile (sağ) arama filtreleri (burada " repo:") arasındaki doğru ilişkiyi hatırlatan bölümleri almazsınız .
    Yapacağınız başka bir girişim bu ilişkilendirmeleri (seçiciler-filtreler) geri görüntülemez. Yalnızca yukarıda gördüğünüz hata mesajı ...
    Bu dizileri geri almanın tek yolu " Advance Search" simgesini tıklamaktır :

GitHub'da Gelişmiş Arama Simgesi

  • Everythingvarsayılan " " arama seçici, aslında tüm arama filtreleri için yanlış seçimdir! " " Dışında ... (" " arama seçicisinin " " arama filtresiyle gerçekten çalışan her şeyi seçmenize yardımcı olacağını düşünebilirsiniz / varsayabiliriz , ancak hayır. Bu çok kolay olurdu)language:
    Everythingrepo:

  • Advance Searchyalnızca " " alanında istediğiniz arama seçiciyi belirtemezsiniz !
    ( " " "türünün " hemen altındaki başka bir birleşik giriş kutusu language:olsa da " Search Language" için yapabilirsiniz Search for...)

Yanlış arama seçici


Yani, kullanıcının deneyimi genellikle aşağıdaki gibidir:

  • " Advanced Search" düğmesini tıklar , filtrelerin bu bölümlerini gözden geçirir ve kullanmak istediğinizi görürsünüz: "repo: "
  • ilk gelişmiş aramayı " repo:jruby/jruby stat", ancak varsayılan Arama seçicisiyle " Everything"
    => FAIL! (ve "Seçiciler-Filtreler" ilişkilendirmesini gösteren diziler gitti )
  • "Ara" seçicisinin ilkini seçin, ilk seçeneği seçin " Repositories" ("Dah! Depolarda aramak istiyorum ...")
    =>FAIL !
  • kederli, Userssöz konusu seçiciye bakmadan bir sonraki seçiciyi (burada " ") seçersiniz , sadece bir kez daha denemek için ...
    =>FAIL !
  • "Bunu yap, GitHub araması bozuldu ! Buradan çıkıyorum!"
    ...
    (GitHub gelişmiş arama aslında bozuk değil. Yalnızca GUI'si ...)

Özetlemek gerekirse, OP Ben Humphreys olarak "bir Github projesinin kodunda bir şey için grep" yapmak istiyorsanız, " Code" arama seçiciyi seçmeyi unutmayın ...


Emin misin, repo:"jruby/jruby" stat repo:"jruby" stat jruby: stathiçbiri çalıştı
Tom H

@TomH: ilk bakışta Gituser alt tarafında bir hata olabilir, superuser.com/a/179900/141
VonC

1
@DannyStaple Eh, onlar github.com/blog/1116-tim-pease-is-a-githubber açıklanan misyon bakarsanız, sorunun farkında gibi görünüyor : "Tim büyük olasılıkla [...] msgstr "tüm GitHub özellikleri için gelişmiş arama deneyimlerini hack'leme". GitHub tweet'lerini ( twitter.com/#!/github/status/197070106768048128 ) yaptığım gibi yanıtladığınızdan emin olun ( twitter.com/#!/VonC_/status/197565733830541313 )
VonC

9
FWIW GitHub ile iletişim kurdum çünkü depolarımla aramaları kısıtlarken herhangi bir arama sonucu almadım. Tim Pease, repo endekslerinin hacmiyle ilgili zorluk yaşadıklarını, bu nedenle kırılmış dizin sunucularına geçtiklerini söyledi. Tüm depoların ne zaman taşınacağı konusunda ETA yoktur.
M Dudley

3
Bu cevabın tavsiyesini yeni kullandım ve bu da benim için çalışıyor, ancak eklemek için bir uyarı var. Repo adı, GitHib tarafından başka bir yerde listelenmiş olsa bile her zaman küçük harf olmalıdır. Örneğin, (yukarıdaki gibi Kod açılır listesini vb. Ayarladıktan sonra) aşağıdakilerle aynı aramayı deneyin: repo: wordpress / wordpress vs repo: WordPress / WordPress ... yalnızca ilk sonuç sonuç verir.
13:36

22

Son özel depolarda bu depoda arama yapmak için bir arama alanı vardır.

resim açıklamasını buraya girin

Şaşırtıcı bir şekilde, bu işlevin halka açık depolar için mevcut olmadığı anlaşılıyor.


1
İnsanların ödeme yapan sürüme geçmelerini sağlamak için düşük ticari bir hareket olup olmadığını merak ediyorum. Github gibi gelmiyor ama yine de.
Sylvain

3
@Sylvain Yükseltme için bir teşvik olarak yapıldığını düşünmüyoruz, yükselttikten sonra bile, genel depolar için bu arama alanını alamayacaksınız. Bunun yerine, ana aramanın özel depoları içermeyen bir dizin kullandığını ve bu nedenle özel bir depo için ödeme yaparken işlevselliği kaybetmediğinizi, yalnızca bu özel depoda arama yapmak için başka bir yol eklemeleri gerektiğini düşünüyorum, bu nedenle ek Metin alanı.
avernet

2
Yüklerinin her repodaki her kod satırı için bir arama endeksi olduğunu hayal edin! Çılgın! Bu yüzden sadece özel depolar için yapıyorlar ..
Jonny Nott

1
Arama artık küresel arama ile aynı başlıkta.
Tib

20

GÜNCELLEME

XHR sorunları ve API değişiklikleri nedeniyle aşağıdaki yer işareti kırılması bozuldu.

Neyse ki Github şimdi işi mükemmel bir şekilde yapan " Yepyeni Bir Kod Arama" var.


Bu voodoo'ya göz atın : Github kodu arama kullanıcı metni .

Buradaki talimatları izleyin veya tarayıcınızı komut dosyaları ve uzantılarla doldurmaktan nefret ediyorsanız, kullanıcı kitabının kitap onaylı paketimi kullanın:

javascript:(function(){var s='https://github.com/skratchdot/github-code-search.user.js/raw/master/github-code-search.user.js',t='text/javascript',d=document,n=navigator,e;(e=d.createElement('script')).src=s;e.type=t;d.getElementsByTagName('head')[0].appendChild(e)})();doIt('');void('');

Yukarıdaki kaynağı yeni bir yer işaretinin URL'si olarak kaydedin. Herhangi bir Github deposuna göz atın, yer işaretini tıklayın ve bam : sayfa içi, ajaxified code search .

CAVEAT Github'da arama yapmadan önce bir depoyu dizine eklemeniz gerekir.

Yer İşaretinden Önce

Abracadabra ...

Sonra - En soldaki sekmelerden sonraki ikinci menü çubuğuna bakın: Dosyalar, Taahhütler, Dallar ...

Açıklamalı ECMAScript 5.1 spesifikasyon deposundan örnek bir arama:

Ek açıklamalı ECMAScript 5.1 spesifikasyon deposunda örnek arama


Eklentiyi (Chrome) kullandığımda scratchdot / github-code-search repo'da iyi çalışıyor, ancak başka bir repoda iyi çalışmıyor.
forforf

Herhangi bir repo'nun ana sayfasında çalışmalıdır. Belki de farklı bir sayfadan mı deniyorsunuz? Yayımımdaki farklı bir depoya örnek bir aramanın ekran görüntüsünü gönderdim.
fny

Aha! Aslında neden bu aramalar başarısız olmuştu keşfetti: bir repo indeksleme için sırasını beklemek gerekir. Milyonlarca aktif depo göz önüne alındığında, bunun biraz zaman aldığından şüpheleniyorum.
fny

2
@ user456584 bu benim için bir haber. Google ve Mozilla'ya da bildirmek isteyebilirsiniz .
fny

2
Eklentinin neden çalışmadığını anladım, çünkü repo adının küçük olması gerekiyor. (Yukarıdaki VonC'nin cevabı hakkındaki yorumuma bakın). GitHub'a zaten bir yama gönderdim, umarım orijinal yazar onu görür. github.com/skratchdot/github-code-search.user.js/pull/5
ethanpil

10

@ VonC'nin cevabı bazı depolar için çalışıyor olsa da, maalesef şu anda yapamayacağınız birçok depo için. Github onları endekslemiyor (@emddudley tarafından yorumlandığı gibi). Bunu web sitelerinde hiçbir yerde belirtmediler, ancak destek isteyip istemediğinizi size söyleyecekler:

Kimden: Tim Pease
Kod arama dizinimize yeni aktarılan kod eklemeyi durdurduk. Kodun hacmi mevcut arama dizinimizi aştı ve daha ölçeklenebilir bir arama mimarisine geçmeye çalışıyoruz. Rahatsızlık için özür dilerim. Bu yeni arama dizininin ne zaman kullanıma hazır olacağını tahmin etmiyoruz, ancak hazır olduğunda bir blog yayını yayınlanacak (https://github.com/blog).

Rahatsız edici bir şekilde, hangi havuzların (eksik bir sorgudan da kaynaklanabilir) dışında, hangi depoların endekslenmediğini anlamanın bir yolu yoktur.

Bu sorunu izlemelerini (veya burada SO'da izlemelerini) beklemekten başka bir yolu da yoktur.

Gönderen: Tim Pease
Sorun izleyicimizin dahili olduğundan korkuyorum, ancak yeni arama dizini çalışır duruma gelir gelmez sizi bilgilendirebiliriz.


En azından bazı arama sonuçlarının atlanabileceğini belirtmelidirler. Tamamen kod refactor zaman ben berbat ve GitHub tarafından belirtilmeyen orada kod oluşumları için arama.
Nicodemuz


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.