Nie w repozytorium Git , a konkretnie w GitHub - jak wyszukiwać tylko komunikaty zatwierdzenia określonego repozytorium / gałęzi?
328
Nie w repozytorium Git , a konkretnie w GitHub - jak wyszukiwać tylko komunikaty zatwierdzenia określonego repozytorium / gałęzi?
Odpowiedzi:
Od 2017 roku jest to funkcja zawarta w samym GitHub .
Użyte przez nich wyszukiwanie przykładowe to
repo:torvalds/linux merge:false crypto policy
źródło
Kiedyś byłeś w stanie to zrobić, ale GitHub usunął tę funkcję w pewnym momencie w połowie 2013 roku. Aby to osiągnąć lokalnie, możesz:
(Użyj
-g
flagi, jeśli chcesz przeszukać inne gałęzie i wiszące zatwierdzenia.)źródło
-g
flagę w najczęstszych przypadkach użycia. Nie zastanawiałem się zbytnio, ale-g
wydaje się, że wyszukiwanie sięga zaledwie jednego miesiąca.git log -g --grep=fix
podczas gdy wdevelop
gałęzi repozytorium, która obejmuje ~ 8000 zobowiązań, obejmuje dwa lata, sięga zaledwie 2 lutego-g
flagą.Aktualizacja (2017/01/05):
GitHub opublikował aktualizację, która pozwala teraz wyszukiwać w komunikatach zatwierdzeń z poziomu ich interfejsu użytkownika. Zobacz post na blogu, aby uzyskać więcej informacji.
Miałem to samo pytanie i wczoraj skontaktowałem się z kimś z GitHub:
Ponieważ zmienili wyszukiwarkę na Elasticsearch, wyszukiwanie komunikatów zatwierdzania za pomocą interfejsu GitHub nie jest możliwe. Ale ta funkcja znajduje się na liście życzeń zespołu.
Niestety obecnie nie ma daty wydania tej funkcji.
źródło
Krótka odpowiedź brzmi: nie można przeszukiwać wiadomości zatwierdzających bezpośrednio na stronie github.com. Na razie zalecamy lokalne
git grep
rozwiązanie zaproponowane przez innych w tym wątku.W pewnym momencie GitHub zaoferował
git grep
wyszukiwanie stylu dla komunikatów zatwierdzania dla pojedynczego repozytorium. Niestety takie podejście ujawniło atak typu „odmowa usługi”, który może uniemożliwić dostęp do serwera plików. Z tego powodu usunęliśmygit grep
wyszukiwanie.Obecne szacunki z tyłu koperty stawiają liczbę zatwierdzeń w GitHubie na poziomie około 80 miliardów. Chociaż inżynierowie Google śmieją się za naszymi plecami, jest to dość duża liczba dokumentów do przechowywania w ElasticSearch. Chcielibyśmy umożliwić wyszukiwanie tego zestawu danych, ale nie jest to trywialny projekt.
źródło
git diff's
(co oznacza zawartość zatwierdzeń, a nie metadane zatwierdzenia)Zostało to usunięte z GitHub. Używam:
Możesz także filtrować według autora:
źródło
Na stronie pomocy dotyczącej wyszukiwania kodu wydaje się, że nie jest to jeszcze możliwe.
Możesz wyszukiwać tekst w repozytorium, w tym możliwość wybierania plików lub ścieżek do przeszukiwania, ale nie możesz określić, że chcesz wyszukiwać w zatwierdzeniach.
Może im to zasugerujesz ?
źródło
Możesz to zrobić w przypadku repozytoriów przeszukanych przez Google (wyniki różnią się w zależności od repozytorium).
Wyszukaj we wszystkich oddziałach wszystkich przeszukanych repozytoriów hasło „zmień licencję”
Wyszukaj w gałęzi głównej wszystkich przeszukanych repozytoriów hasło „zmień licencję”:
Wyszukaj w gałęzi głównej wszystkich zindeksowanych repozytoriów Twittera hasło „zmień licencję”
Przeszukaj wszystkie gałęzie repozytorium twitter / some_project pod kątem „zmień licencję”
źródło
Aktualizacja ze stycznia 2017 r. (Dwa lata później):
Możesz teraz wyszukiwać komunikaty zatwierdzania ! (wciąż tylko w gałęzi master)
Luty 2015: Nie jestem pewien, czy kiedykolwiek będzie to możliwe, biorąc pod uwagę obecną bazę infrastruktury wyszukiwania w Elasticsearch (wprowadzoną w styczniu 2013 ).
Jako odpowiedź „czerpiąc z wiarygodnych i / lub oficjalnych źródeł”, oto wywiad przeprowadzony z osobami GitHub odpowiedzialnymi za wprowadzenie Elasticsearch w GitHub (sierpień 2013)
Że wszystkie środki nie wszystkie gałęzie wszystkich repo będzie indeksowana z takim podejściem.
Globalne wyszukiwanie wiadomości zatwierdzania nie jest obecnie dostępne.
I sam Tim Pease potwierdza popełnić wiadomości nie są indeksowane .
Zauważ, że nie jest możliwe uzyskanie własnej elastycznej wyszukiwarki lokalnego indeksowania lokalnego klonu: patrz „ Przeszukiwanie repozytorium git za pomocą ElasticSearch ”
Ale w przypadku konkretnego repo najłatwiej jest go sklonować i wykonać:
(Więcej opcji w „ Jak przeszukiwać repozytorium Git według komunikatu zatwierdzenia? ”)
źródło
Ponieważ zostało to usunięte z GitHub, korzystałem z niego
gitk
w systemie Linux.Z terminalu przejdź do swojego repozytorium i wpisz
gitk
.Pośrodku GUI znajduje się pole wyszukiwania. Zapewnia dobry wybór filtrów:
Zakres - zawierający, dotykający ścieżek, dodający / usuwający ciąg, zmieniający dopasowanie linii
Typ dopasowania - Exact / IgnCase / Regexp
Wyszukaj pola - Wszystkie pola / Nagłówek / Komentarze / Osoba odpowiedzialna
źródło
Działa to dobrze z poziomu Eclipse , dopóki GitHub nie doda tej funkcji:
EWit / Podręcznik użytkownika, wyszukiwanie zatwierdzeń
źródło
Jeśli masz lokalną wersję repozytorium, możesz wypróbować ten surowy skrypt powłoki, który napisałem, aby otworzyć strony GitHub dla wszystkich zatwierdzeń pasujących do wyszukiwanego hasła w nowych kartach w domyślnej przeglądarce:
Po prostu zamień
https://github.com/RepoOwnerUserName/RepoName/
na rzeczywisty adres URL GitHub repozytorium, zapisz gdzieś skrypt (np. Jakogithubsearch.sh
, wykonaj go (chmod +x githubsearch.sh
), a następnie dodaj następujący~/.bashrc
plik do swojego pliku:Następnie z dowolnego miejsca w repozytorium Git po prostu zrób to na terminalu:
a wszelkie zatwierdzenia pasujące do wyszukiwanego hasła (bez rozróżniania wielkości liter) będą miały odpowiadające im strony GitHub otwarte w przeglądarce. (Ostrzegamy, że jeśli wyszukiwane hasło pojawia się w setkach zatwierdzeń, może to spowodować awarię przeglądarki i przez pewien czas zużywać procesor komputera).
źródło
Od połowy 2019 r. Po prostu wpisz wszystko, co chcesz wyszukać, w lewym górnym polu wyszukiwania, a następnie kliknij „Zatwierdza”.
źródło