Değil bir Git depo , ancak bu özelliği GitHub'dan özellikle - nasıl belirli bir depo / şube mesajları işlemek sadece arayabilirim?
Değil bir Git depo , ancak bu özelliği GitHub'dan özellikle - nasıl belirli bir depo / şube mesajları işlemek sadece arayabilirim?
Yanıtlar:
2017 itibariyle GitHub'ın kendisinde bulunan bir işlev .
Onlar tarafından kullanılan örnek arama repo:torvalds/linux merge:false crypto policy
Https://github.com/blog/2299-search-commit-messages GIF resmi
Bunu yapabiliyordunuz, ancak GitHub bu özelliği 2013'ün ortalarında kaldırmıştı. Bunu yerel olarak başarmak için şunları yapabilirsiniz:
git log -g --grep=STRING
( -g
Diğer dalları ve sarkan taahhütleri aramak istiyorsanız bayrağı kullanın .)
-g, --walk-reflogs
Instead of walking the commit ancestry chain, walk reflog entries from
the most recent one to older ones.
-g
en yaygın kullanım durumları için bayrağı atlayın . Buna çok fazla bakmadım, ancak -g
arama sadece bir ay geri gidiyor gibi görünüyor. git log -g --grep=fix
ise develop
iki yıl kapsayan ~ 8000 kaydedilmesini olan bir repo dalı, sadece kadar geriye Feb 2. olarak gider
-g
bayrakla en az 5 ay geriye giden taahhütleri bulabildim .
Güncelleme (2017/01/05):
GitHub, artık kullanıcı arayüzlerinden taahhüt mesajları içinde arama yapmanızı sağlayan bir güncelleme yayınladı. Daha fazla bilgi için blog yayınına bakın .
Aynı soruyu sordum ve dün GitHub'la biriyle iletişime geçtim:
Arama motorlarını Elasticsearch'e değiştirdikleri için GitHub kullanıcı arayüzünü kullanarak taahhüt mesajları aramak mümkün değildir. Ancak bu özellik takımın istek listesinde.
Maalesef şu anda bu işlev için çıkış tarihi yok.
Kısa cevap, taahhüt mesajlarını doğrudan github.com web sitesinde arayamazsınız. Şu an git grep
için bu çözümde başkalarının önerdiği yerel çözümü öneriyoruz .
Bir zamanlar GitHub, git grep
tek bir havuz için taahhüt mesajları üzerinde bir stil araması sundu. Ne yazık ki, bu yaklaşım bir dosya sunucusunu erişilemez hale getirebilecek bir hizmet reddini ortaya çıkarmıştır. Bu nedenle git grep
aramayı kaldırdık .
Mevcut zarf arkası tahminleri GitHub'daki taahhütlerin sayısını 80 milyar civarında bir yere koyuyor. Google mühendisleri arkamızdan gülmesine rağmen, bu Elastik Arama'da saklanacak oldukça fazla sayıda belgedir. Bu veri kümesini aranabilir yapmak isteriz, ancak bu önemsiz bir proje değildir.
Bu GitHub'dan kaldırıldı. Kullanırım:
$git log --all --oneline | grep "search query"
Yazara göre de filtreleyebilirsiniz:
$git log --all --oneline --author=rickhanlonii | grep "search query"
Kod arama hakkındaki yardım sayfasında , bunun henüz mümkün olmadığı anlaşılıyor.
Deponuzda, içinde arama yapılacak dosyaları veya yolları seçme yeteneği de dahil olmak üzere metin arayabilirsiniz, ancak taahhütte aramak istediğinizi belirtemezsiniz.
Belki bunu onlara önerin ?
Bunu Google tarafından taranan depolarla yapabilirsiniz (sonuçlar depodan depoya değişir).
"lisansı değiştir" sitesi: https://github.com/*/*/commits
"lisansı değiştir" sitesi: https://github.com/*/*/commits/master
"lisansı değiştir" sitesi: https://github.com/twitter/*/commits/master
"lisansı değiştir" sitesi: https://github.com/twitter/some_project/commits
Ocak 2017 güncellemesi (iki yıl sonra):
Artık tamamlama mesajlarını arayabilirsiniz ! (hala sadece ana dalda)
Şubat 2015: Elasticsearch'teki mevcut arama altyapısı tabanı ( Ocak 2013'te tanıtıldı ) dikkate alındığında bunun mümkün olabileceğinden emin değilim .
"Güvenilir ve / veya resmi kaynaklardan çizim" cevabı olarak, GitHub'da Elasticsearch'ü tanıtmaktan sorumlu GitHub çalışanları ile yapılan bir röportaj (Ağustos 2013)
Tim Pease : Burada iki belge türümüz var: Biri bir kaynak kodu dosyası diğeri bir havuz. Git'in çalışma şekli taahhütleriniz ve her taahhüt için bir şubeniz olması. Havuz belgeleri, dizine eklenmiş belirli bir havuz için en son taahhüdü izler. Bir kullanıcı Github'a yeni bir taahhütte bulunduğunda, o depo belgesini elastik aramadan çıkarırız. Daha sonra en son dizine eklenen taahhüdü görürüz ve daha sonra bu son push ile önceden dizine eklediğimiz dosya arasında değiştirilen, eklenen veya silinen tüm dosyaların bir listesini alırız. Ardından, değiştirilen belgeleri güncelleyebiliriz. Birisi her itişinde kaynak kod ağacının tamamını yeniden indekslememiz gerekmez.
Andrew Cholakian: Yani, siz sadece endeksiniz, sanırım, ana dal.
Tim Pease: Doğru. Oraya gireceğiniz sadece ana dalın başı ve yine de çok fazla veri, iki milyar belge, 30 terabayt.
Andrew Cholakian: Bu çok büyük.
[...]
Tim Pease: Push kaynak kodu indeksleme ile, kendi kendini iyileştirme süreci.
En son endekslenmiş taahhüdü takip eden veri havuzu belgesine sahibiz. Eğer kaçırırsak, bu işlerin başarısız olduğu üç taahhüdü kaçırırsak, bir sonraki taahhüt gelir, hala endekslediğimiz önceki taahhüt ile bu yeni itme ile gördüğümüz taahhüt arasındaki farkı inceliyoruz.
Bunu yaparsınızgit diff
ve güncellenen, silinen veya eklenen tüm dosyaları alırsınız. “Tamam, bu dosyaları kaldırmamız gerekiyor. Bu dosyaları ve hepsini eklememiz gerekiyor. ” Bu kendi kendini onaran ve hemen hemen tüm mimaride benimsediğimiz yaklaşım bu.
Bütün araçlar değil bu bütün dalları bütün repo o yaklaşımla endeksli olacaktır.
Şu an için bir global taahhüt mesajı araması yok.
Ve Tim Pease kendisi taahhüt mesajlarının endekslenmediğini onaylar .
Yerel bir klonu kişinin kendi elasticsearch yerel indeksleme almak mümkün olmadığı Not: "bakınız ElasticSearch ile git depo aranıyor "
Ancak belirli bir repo için en kolayı klonlamak ve aşağıdakileri yapmaktır:
git log --all --grep='my search'
(" Git mesajında bir Git deposunu nasıl arayabilirim? " Bölümündeki diğer seçenekler )
Bu GitHub'dan kaldırıldığından, bunu gitk
yapmak için Linux'ta kullanıyorum .
Terminalden deponuza gidin ve yazın gitk
.
GUI'nin ortasında bir arama kutusu var. İyi bir filtre seçimi sağlar:
Kapsam - yolları içeren, dokunan yollar, dize ekleme / kaldırma, satır eşleşmesini değiştirme
Eşleme türü - Tam / IgnCase / Normal İfade
Arama alanları - Tüm alanlar / Başlık / Yorumlar / Committer
GitHub özelliği ekleyene kadar Eclipse içinden iyi çalışır :
Deponun yerel bir sürümüne sahipseniz, arama teriminizle eşleşen tüm taahhütler için varsayılan tarayıcınızdaki yeni sekmelerde GitHub sayfalarını açmak için yazdığım bu ham kabuk komut dosyasını denemek isteyebilirsiniz:
#!/bin/sh
for sha1 in $(git rev-list HEAD -i --grep="$1"); do
python -mwebbrowser https://github.com/RepoOwnerUserName/RepoName/commit/$sha1 >/dev/null 2>/dev/null
done
Sadece https://github.com/RepoOwnerUserName/RepoName/
deponuzun gerçek GitHub URL'si ile değiştirin , komut dosyasını bir yere kaydedin (örneğin githubsearch.sh
, yürütülebilir yapın ( chmod +x githubsearch.sh
) ve ardından ~/.bashrc
dosyanıza aşağıdaki diğer adı ekleyin) :
alias githubsearch='/path/to/githubsearch.sh'
Daha sonra Git deponuzun herhangi bir yerinden terminalde bunu yapın:
githubsearch "what you want to search for"
ve (büyük / küçük harfe duyarlı olmayan) arama teriminizle eşleşen tüm taahhütlerde, ilgili GitHub sayfaları tarayıcınızda açılır. (Arama teriminiz yüzlerce taahhütte görünüyorsa, bu tarayıcınızın çökmesine ve bilgisayarınızın CPU'sunu bir süre yiyebileceğine dikkat edin.)