Поиск в журнале репозитория и его упорядочивание с помощью GitHub
Здесь мы обсудим, как можно использовать фильтры, представление blame и перекрестные связи для выполнения поиска в журнале репозитория и упорядочивания его.
Представьте, что вы — разработчик, который только что присоединился к крупному проекту. Кто-то только что опубликовал новую проблему, сообщающую об ошибке, связанной с боковой панелью веб-приложения, и вы были назначены исправить ее. Вы уже прочитали отчет несколько раз и понимаете, в чем заключается проблема, и теперь вам нужно понять, как приступить к исправлению.
Как новый участник команды вы еще не знакомы с базой кода. Вы также не были частью обсуждений планирования, проверок кода или что-либо другое, которое предоставит вам контекст, который необходимо начать реализацию. В первую очередь вам нужно получить эти базовые знания, чтобы лучше понять, что именно нужно исправить.
Поиск в GitHub
Хотя вы не принимали участие в событиях, которые привели к реализации боковой панели, многие из этих событий находятся в журнале проекта. Чтобы получить отправную точку, выполните поиск в репозитории проекта по ключевому слову "боковая панель".
На GitHub существует два способа поиска: глобальный поиск, который находится вверху страницы, и поиск в определенной области, доступный на некоторых вкладках репозитория. Они поддерживают тот же синтаксис и функцию таким же образом, но с некоторыми ключевыми различиями.
Глобальный поиск
Глобальный поиск позволяет использовать полный синтаксис поиска для выполнения поиска по всем разделам GitHub.
Результаты поиска являются исчерпывающими и включают в себя все, от кода и проблем до Marketplace и даже пользователей. Это лучший способ найти упоминания ключевых терминов среди многочисленных типов результатов и репозиториев.
Примечание.
Предложение фильтра is:pr
отфильтровывает проблемы, возвращенные из хранилища проблем/запросов на вытягивание. Некоторые предложения фильтра, например is:pr
, поддерживаются только определенными поставщиками поиска; остальные поставщики поиска эти предложения игнорируют. Например, поставщик поиска кода не поддерживает это предложение, поэтому он будет игнорировать его и возвращать те же результаты, что и без этого предложения.
В нашем сценарии глобальный поиск — хороший способ поиска кода и фиксаций, в которых упоминается термин "боковая панель". Однако, скорее всего, вы также получите результаты из проблем и запросов на вытягивание, а их не так просто отфильтровать в представлении результатов глобального поиска.
Для создания сложного запроса глобального поиска попробуйте использовать расширенный поиск.
Контекстный поиск
Контекстный поиск доступен на некоторых вкладках, например на вкладках Проблемы и Запросы на вытягивание. Область такого поиска ограничена текущим репозиторием, и возвращаются только результаты этого типа. Преимущество этой области заключается в том, что он позволяет пользовательскому интерфейсу предоставлять известные фильтры, относящиеся к типу, такие как авторы, метки, проекты и многое другое.
Использование контекстного поиска — лучший способ поиска чего-либо в текущем репозитории. В нашем сценарии это хороший способ найти результаты поиска с упоминанием боковой панели, которую можно легко уточнить с помощью раскрывающихся списков фильтра.
Использование фильтров поиска
Существует множество способов поиска с использованием полного синтаксиса поиска. Однако в большинстве операций поиска используется только несколько распространенных фильтров. Хотя их часто можно выбрать в раскрывающихся списках контекстного поиска, иногда удобнее вводить их напрямую.
Ниже приведено несколько примеров фильтрации запросов.
Query | Описание |
---|---|
is:open is:issue assignee:@me |
Открытые проблемы, назначенные текущему пользователю (@me ) |
is:closed is:pr author:contoso |
Закрытые запросы на вытягивание, созданные @contoso |
is:pr sidebar in:comments |
Запросы на вытягивание, где в комментариях упоминается термин "боковая панель" |
is:open is:issue label:bug -linked:pr |
Открытые проблемы, помеченные как ошибки, которые не имеют связанного запроса на вытягивание |
Дополнительные сведения см. в разделе Основные сведения о синтаксисе поиска
Что такое git blame?
Несмотря на грозное звучание, git blame
— это команда, которая отображает журнал фиксаций для файла. С ее помощью можно легко узнать, кто и когда внес изменения. Это значительно упрощает отслеживание других людей, которые работали над файлом, чтобы искать свои входные данные или участие.
Примечание.
В некоторых системах Git используется псевдоним git praise
для git blame
, чтобы избежать неправильных аналогий.
Blame в GitHub
GitHub расширяет базовые возможности git blame
за счет более функционального пользовательского интерфейса.
В нашем сценарии нужное представление можно получить несколькими способами. Возможно, вы нашли некоторый код боковой панели из глобального поиска и выбрали параметр "Винить ", чтобы увидеть, кто работал над ним последний, или, возможно, вы нашли запрос на вытягивание и отследили, что обратно к последней фиксации, которая кажется связанной с описанием ошибки. Но как бы вы его ни получили, представление blame является эффективным способом обнаружения соответствующего специалиста для поставленной задачи.
Проблемы перекрестных связей, фиксации и многое другое
Одной из главных особенностей, делающих GitHub отличной площадкой для совместных проектов разработки программного обеспечения, является поддержка связывания разнородных фрагментов информации. Часть таких связываний образуется автоматически, например когда вы создаете запрос на вытягивание из ряда фиксаций в ветви. В других случаях можно использовать интерфейс, чтобы вручную связать запросы на вытягивание или проекты с проблемами с помощью параметров из раскрывающегося списка.
Автосвязанные ссылки
Для упрощения перекрестного связывания различных элементов в рамках проекта GitHub предлагает сокращенный синтаксис. Например, если вы оставите комментарий Duplicate of #8
, GitHub поймет, что #8 является проблемой и создаст для вас соответствующую ссылку.
GitHub также связывает для вас фиксации, если вы вставите первые семь символов их идентификаторов.
В нашем сценарии эти связи могут оказаться очень полезными для расширения рамок, если кто-то заранее подумает о предоставлении контекста. Например, текущее состояние боковой панели может иметь некоторые известные проблемы, связанные с зависимостью JavaScript. Если проблема с этой зависимостью была рассмотрена в другой проблеме, которая явно не упомянула "боковую панель", то было бы трудно найти. Однако если кто-то заранее подумает о том, чтобы связать эту проблему в обсуждении, это может сэкономить вам много времени. Не забывайте об этом, когда будете документировать проблемы и запросы на вытягивание.
Дополнительные сведения см. в разделе Автосвязанные ссылки и URL-адреса.
Включение пользователей в обсуждения с помощью @mention
Помимо связывания проблем и фиксаций, часто бывает полезно связывать других пользователей с обсуждениями. Простейший способ сделать это — использовать @mention
. При таком упоминании упомянутый пользователь получает уведомление, чтобы он мог принять участие в обсуждении. Это также хороший способ идентифицировать людей, связанных с проблемами, после того, как эти проблемы были закрыты.