Не у сховищі Git , а конкретно в GitHub - як я шукаю лише повідомлення фіксування певного сховища / гілки?
Не у сховищі Git , а конкретно в GitHub - як я шукаю лише повідомлення фіксування певного сховища / гілки?
Відповіді:
Станом на 2017 рік це функціонал, включений у сам GitHub .
Приклад пошуку, який вони використовують, є repo:torvalds/linux merge:false crypto policy
GIF-зображення від https://github.com/blog/2299-search-commit-messages
Раніше ви могли це робити, але GitHub цю функцію видалив у середині 2013 року. Щоб досягти цього на місцевому рівні, ви можете зробити:
git log -g --grep=STRING
(Використовуйте -g
прапор, якщо ви хочете шукати інші гілки та звисаючі комітети.)
-g, --walk-reflogs
Instead of walking the commit ancestry chain, walk reflog entries from
the most recent one to older ones.
-g
прапор для найбільш поширених випадків використання. Я не надто придивлявся до цього, але -g
, здається, пошук триває лише один місяць. git log -g --grep=fix
в той час, як у develop
відділенні репо, яке налічує ~ 8000, здійснює два роки, він іде лише 2 лютого.
-g
прапором.
Оновлення (2017/01/05):
GitHub опублікував оновлення, за допомогою якого зараз можна здійснювати пошук у повідомленнях комітів із їх інтерфейсу. Перегляньте публікацію в блозі для отримання додаткової інформації.
У мене було те саме питання, і я вчора зв’язався з кимось із GitHub:
Оскільки вони переключили свою пошукову систему на Elasticsearch, неможливо шукати повідомлення про фіксацію за допомогою інтерфейсу GitHub. Але ця особливість є у списку побажань команди.
На жаль, наразі немає дати випуску цієї функції.
Коротка відповідь полягає в тому, що ви не можете шукати повідомлення про фіксацію безпосередньо на веб-сайті github.com. На даний момент ми рекомендуємо локальне git grep
рішення, яке запропонували інші на цій темі.
В один момент часу GitHub запропонував git grep
пошук стилю за повідомленнями фіксування для одного сховища. На жаль, такий підхід виявив відмову в обслуговуванні, що може зробити файловий сервер недоступним. З цієї причини ми зняли git grep
пошук.
Поточні підрахунки конвертів ставлять кількість комісій в GitHub десь близько 80 мільярдів позначок. Хоча інженери Google сміються за нашими спинами, це досить велика кількість документів, які можна зберігати в ElasticSearch. Ми хотіли б зробити цей набір даних пошуковим, але це не тривіальний проект.
git diff's
( маючи на увазі зміст
Це було видалено з GitHub. Я використовую:
$git log --all --oneline | grep "search query"
Ви також можете фільтрувати за автором:
$git log --all --oneline --author=rickhanlonii | grep "search query"
На сторінці довідки про пошук коду здається, що це ще неможливо.
Ви можете шукати текст у вашому сховищі, включаючи можливість вибору файлів або шляхів для пошуку, але ви не можете вказати, що ви хочете шукати в комітетах.
Може, підказати це їм ?
Це можна зробити з репозиторіями, сканованими Google (результати варіюються від сховища до сховища).
сайт "зміни ліцензії": https://github.com/*/*/commissions
Сайт "зміни ліцензії": https://github.com/*/*/commits/master
Сайт "зміни ліцензії": https://github.com/twitter/*/commits/master
Сайт "зміни ліцензії": https://github.com/twitter/some_project/commissions
Оновлення січня 2017 року (через два роки):
Тепер ви можете шукати повідомлення про фіксацію ! (все ще лише в головній галузі)
Лютий 2015: Не впевнений, що це коли-небудь можливо, враховуючи поточну базу пошукової інфраструктури Elasticsearch (запроваджену в січні 2013 року ).
Як відповідь "малюнок з достовірних та / або офіційних джерел", ось інтерв'ю, зроблене з людьми GitHub, відповідальними за впровадження Elasticsearch в GitHub (серпень 2013 р.)
Тім Піз : У нас є два типи документів: один - файл вихідного коду, а другий - сховище. Як працює git, ви маєте виконувати комісії і у вас є відділення для кожного комітету. Документи репозиторію відслідковують останню передачу даних для цього конкретного сховища, яке було індексовано. Коли користувач підштовхує нову комісію до Github, ми витягуємо цей репозиторій документ із еластичного пошуку. Потім ми бачимо останню індексовану комісію, а потім отримуємо список усіх файлів, які були змінені або додані або видалені між цим останнім натисканням та тим, що ми раніше індексували. Тоді ми можемо продовжувати та просто оновлювати ті документи, які були змінені. Нам не потрібно повторно індексувати все дерево вихідних кодів кожного разу, коли хтось натискає.
Андрій Чолакян: Отже, ви, хлопці, лише індексуєте, я припускаю, головний відділ.
Тім Піс: Правильно. Тільки голова головного відділення ви збираєтеся туди потрапити, і це ще багато даних, два мільярди документів, 30 терабайт.
Ендрю Чолакян: Це надзвичайно величезно.
[...]
Тім Піз: Якщо індексувати вихідний код під час натискання, це процес самолікування.
У нас є той документ у сховищі, який відстежує останню індексовану комісію. Якщо ми пропустили, просто трапимо три коміти, коли ці завдання не виходять, наступна комісія, яка входить, ми все ще переглядаємо різницю між попередньою комісією, яку ми індексували, і тією, яку ми бачимо з цим новим натиском.
Ви робите це,git diff
і ви отримуєте всі файли, які були оновлені, видалені або додані. Ви можете просто сказати: «Гаразд, нам потрібно видалити ці файли. Нам потрібно додати ці файли, і все це. " Це самолікування, і це такий підхід, який ми застосували майже з усієї архітектури.
Це все означає не все ці гілки з усіх репо будуть проіндексовані з цим підходом.
Пошук глобальних повідомлень про фіксацію наразі недоступний.
А сам Тім Піз підтверджує, що повідомлення про вчинення не індексуються .
Зауважте, що неможливо отримати власну еластичну пошукову локальну індексацію локального клону: див. " Пошук сховища git за допомогою ElasticSearch "
Але для конкретного репо, найпростіше залишати його клонувати та робити:
git log --all --grep='my search'
(Додаткові параметри в розділі " Як шукати сховище Git за допомогою повідомлення "
Оскільки це було видалено з GitHub, я використовував це gitk
в Linux для цього.
З терміналу перейдіть до вашого сховища та введіть gitk
.
В середині GUI є вікно пошуку. Він забезпечує хороший вибір фільтрів:
Область застосування - містить, торкаючись контурів, додаючи / видаляючи рядок, змінюючи відповідність рядків
Тип відповідності - Exact / IgnCase / Regexp
Поля пошуку - Усі поля / Заголовок / Коментарі / Комітер
Це добре працює зсередини Eclipse , поки GitHub не додає функцію:
Якщо у вас є локальна версія сховища, ви можете спробувати цей сирий скрипт оболонки, який я написав, щоб відкрити сторінки GitHub для всіх комісій, що відповідають вашому пошуковому терміну на нових вкладках у вашому браузері за замовчуванням:
#!/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
Просто замініть https://github.com/RepoOwnerUserName/RepoName/
фактичну URL-адресу GitHub вашого сховища, збережіть сценарій десь (наприклад githubsearch.sh
, зробіть його виконуваним ( chmod +x githubsearch.sh
), а потім додайте у ~/.bashrc
файл наступний псевдонім :
alias githubsearch='/path/to/githubsearch.sh'
Потім з будь-якого місця вашого сховища Git просто зробіть це в терміналі:
githubsearch "what you want to search for"
і будь-які комісії, які відповідають вашому пошуковому терміну (не залежно від регістру), у вашому браузері відкриються відповідні сторінки GitHub. (Будьте попереджені, що якщо ваша пошукова фраза відображається в сотнях комітетів, це може зламати ваш веб-переглядач і з'їсти процесор вашого ПК на деякий час.)