Поиск в журнале репозитория и его упорядочивание с помощью GitHub
Здесь мы обсудим, как можно использовать фильтры, винить, перекрестно связывать, метки, вехи, сохраненные ответы и назначать их для поиска и упорядочивания журнала репозитория.
Представьте, что вы — разработчик, который только что присоединился к крупному проекту. Кто-то только что опубликовал новую проблему, сообщающую об ошибке, связанной с боковой панелью веб-приложения, и вы были назначены исправить ее. Вы уже прочитали отчет несколько раз и понимаете, в чем заключается проблема, и теперь вам нужно понять, как приступить к исправлению.
Как новый участник команды вы еще не знакомы с базой кода. Вы также не были частью обсуждений планирования, проверок кода или что-либо другое, которое предоставит вам контекст, который необходимо начать реализацию. В первую очередь вам нужно получить эти базовые знания, чтобы лучше понять, что именно нужно исправить.
Поиск в GitHub
Хотя вы не принимали участие в событиях, которые привели к реализации боковой панели, многие из этих событий находятся в журнале проекта. Чтобы получить отправную точку, выполните поиск в репозитории проекта по ключевому слову "боковая панель".
На GitHub существует два способа поиска: глобальный поиск, который находится вверху страницы, и поиск в определенной области, доступный на некоторых вкладках репозитория. Они поддерживают тот же синтаксис и функцию таким же образом, но с некоторыми ключевыми различиями.
Глобальный поиск
Глобальный поиск позволяет использовать полный синтаксис поиска для поиска по всему GitHub.
Результаты поиска являются исчерпывающими и включают в себя все, от кода и проблем до Marketplace и даже пользователей. Это лучший способ найти упоминания ключевых терминов среди многочисленных типов результатов и репозиториев.
Примечание.
Предложение фильтра is:pr отфильтровывает проблемы, возвращенные из хранилища проблем/запросов на вытягивание. Некоторые предложения фильтра, например is:pr, поддерживаются только определенными поставщиками поиска; остальные поставщики поиска эти предложения игнорируют. Например, поставщик поиска кода не поддерживает это предложение, поэтому он будет игнорировать его и возвращать те же результаты, что и без этого предложения.
В нашем сценарии глобальный поиск — хороший способ поиска кода и фиксаций, в которых упоминается термин "боковая панель". Однако, скорее всего, вы также получите результаты из проблем и запросов на вытягивание, а их не так просто отфильтровать в представлении результатов глобального поиска.
Чтобы создать сложный глобальный поиск, попробуйте расширенный поиск.
Контекстный поиск
Поиск по контексту доступен на некоторых вкладках, таких как Issues и запросы на извлечение. Область такого поиска ограничена текущим репозиторием, и возвращаются только результаты этого типа. Преимущество этой области заключается в том, что он позволяет пользовательскому интерфейсу предоставлять известные фильтры, относящиеся к типу, такие как авторы, метки, проекты и многое другое.
Использование контекстного поиска — лучший способ поиска чего-либо в текущем репозитории. В нашем сценарии это хороший способ найти результаты поиска с упоминанием боковой панели, которую можно легко уточнить с помощью раскрывающихся списков фильтра.
Использование фильтров поиска
Существует бесконечное количество способов поиска с помощью полного синтаксиса поиска. Однако в большинстве операций поиска используется только несколько распространенных фильтров. Хотя их часто можно выбрать в раскрывающихся списках контекстного поиска, иногда удобнее вводить их напрямую.
Ниже приведено несколько примеров фильтрации запросов.
| Запрос | Описание |
|---|---|
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 |
Открытые проблемы, помеченные как ошибки, которые не имеют связанного запроса на вытягивание |
Дополнительные сведения о синтаксисе поиска
Использование вех
Вехи позволяют группировать проблемы и извлекать запросы в общие цели, такие как спринт, выпуск продукта или этап проекта. Они помогают командам отслеживать ход выполнения и поддерживать соответствие всем.
- Вехи можно упорядочить (так же, как проекты), что позволяет легко задавать приоритеты и визуализировать наиболее важные вехи.
- Ход выполнения каждой вехи отслеживается автоматически. GitHub показывает, сколько проблем или PR завершено и сколько осталось.
- Вехи особенно полезны для отслеживания работы, которая входит в отдельные выпуски или этапы.
Создание вехи
- Перейдите на вкладку "Проблемы" репозитория.
- Выберите вехи в верхнем меню.
- Нажмите кнопку "Создать веху".
- Введите название, описание и при необходимости дату выполнения.
- Нажмите кнопку "Создать веху".
Назначение вехи запросу на выдачу или вытягивание
- Откройте любую проблему или PR.
- В правой боковой панели выберите "Веха".
- Выберите из списка доступных вех.
Вы также можете добавить вехи в качестве столбца в макет проектов GitHub или отобразить веху в виде карточки на доске проектов GitHub. Это помогает визуализировать ход выполнения вашей команды непосредственно из совета планирования проектов и управлять ими.
Вы можете фильтровать по вехе в проектах GitHub или с помощью расширенных поисковых запросов, таких как:
is:open is:pr milestone:"Release v1.0"
Вехи лучше всего работают при согласованном использовании в рабочем процессе планирования вашей команды.
Метки и вехи в поиске
Метки и вехи — это средства метаданных, которые помогают командам упорядочивать проблемы и запросы на вытягивание. Они также повышают точность поисковых запросов.
Фильтрация по метки
Проблемы можно сузить, отфильтровав ключевое label: слово.
Рассмотрим пример.
is:open is:issue label:bug
При этом возвращаются все открытые проблемы, помеченные как "ошибка". Метки могут отражать тип проблемы, приоритет, состояние команды или рабочего процесса.
Подсказка
Вы можете объединить метки с другими фильтрами для точных запросов, например:
is:pr label:"ready for review" author:@me
Фильтрация по вехе
Вехи помогают группировать проблемы и запрашивать запросы на получение целевого выпуска или цели. Используйте ключевое слово в запросе milestone: для возврата элементов в рамках определенной вехи.
Рассмотрим пример.
is:open is:issue milestone:"Sprint 1"
Примечание.
Только открытые вехи будут совпадать, если вы не включите закрытые, выполнив поиск.milestone:*
Что такое git blame?
Несмотря на грозное звучание, git blame — это команда, которая отображает журнал фиксаций для файла. С ее помощью можно легко узнать, кто и когда внес изменения. Это значительно упрощает отслеживание других людей, которые работали над файлом, чтобы искать свои входные данные или участие.
Примечание.
В некоторых системах Git используется псевдоним git praise для git blame, чтобы избежать неправильных аналогий.
Blame в GitHub
GitHub расширяет базовые возможности git blame за счет более функционального пользовательского интерфейса.
В нашем сценарии нужное представление можно получить несколькими способами. Возможно, вы нашли некоторый код панели навигации из глобального поиска и выбрали параметр "Виновный", чтобы увидеть, кто работал над ним последним, или, возможно, вы нашли пулл-реквест и отследили его до последней фиксации, которая кажется связанной с описанием ошибки. Но как бы вы его ни получили, представление blame является эффективным способом обнаружения соответствующего специалиста для поставленной задачи.
Проблемы перекрестных связей, фиксации и многое другое
Одной из главных особенностей, делающих GitHub отличной площадкой для совместных проектов разработки программного обеспечения, является поддержка связывания разнородных фрагментов информации. Часть таких связываний образуется автоматически, например когда вы создаете запрос на вытягивание из ряда фиксаций в ветви. В других случаях можно использовать интерфейс, чтобы вручную связать запросы на вытягивание или проекты с проблемами с помощью параметров из раскрывающегося списка.
Сохраненные ответы
Сохраненные ответы позволяют быстро реагировать на проблемы и запросы на вытягивание с помощью предварительно записанных сообщений. Они особенно полезны для обслуживания проектов, которые часто дают те же отзывы или инструкции.
Создание или изменение сохраненного ответа
- Щелкните фотографию профиля в правом верхнем углу и выберите "Параметры".
- На левой боковой панели нажмите кнопку "Сохраненные ответы".
- Выберите "Создать сохраненный ответ".
- Введите заголовок и сообщение.
- Нажмите кнопку "Сохранить ответ".
Чтобы изменить или удалить сохраненный ответ, вернитесь к параметрам сохраненных ответов и используйте параметры рядом с каждым из них.
Использование сохраненного ответа
При написании комментария по проблеме или запросу на вытягивание можно вставить сохраненный ответ:
- Щелкните поле комментария.
- Выберите значок "Вставить сохраненный ответ" (пузырьок речи с строками).
- Выберите сохраненный ответ из списка.
- При необходимости измените текст и нажмите кнопку "Примечание".
Сохраненные ответы позволяют сэкономить время и обеспечить согласованность при реагировании на запросы в проекте.
Ниже приведена обновленная версия, которая содержит рекомендации по шаблонам вопросов, объясняя их, как они отличаются от сохраненных ответов, и почему они обычно лучше собирать структурированные сведения заранее.
Шаблоны проблем
Хотя сохраненные ответы полезны для распространенных ответов, шаблоны вопросов являются лучшим способом убедиться, что участники предоставляют все необходимые сведения при создании новых проблем.
- Шаблоны проблем запрашивают пользователей заполнять определенные поля или отвечать на определенные вопросы заранее, уменьшая их и обеспечивая наличие необходимых сведений с самого начала.
- Вспомогательные шаблоны помогают избегать "потерянных данных", собирая структурированные сведения до отправки проблемы.
Подсказка
Чтобы настроить шаблоны проблем, перейдите кшаблонам настройки параметров репозитория>>. Вы можете создавать шаблоны для отчетов об ошибках, запросов функций или других потребностей проекта.
Рекомендации. Используйте шаблоны проблем для сбора необходимых сведений и уменьшения недостающих или неполных сведений. Используйте сохраненные ответы для обычных ответов и инструкций после отправки запросов на вытягивание.
Добавление назначаемого
Вы можете назначить одного или нескольких пользователей запросу на запрос на вытягивание, чтобы показать, кто отвечает за работу над ним.
Добавление назначаемого
- Откройте запрос на вытягивание или проблему.
- На правой боковой панели нажмите кнопку "Назначить".
- Выберите одного или нескольких пользователей из раскрывающегося списка.
Вы также можете назначить пользователей непосредственно из представления списка с помощью флажков рядом с каждой проблемой и выбора "Назначить" в верхней строке.
Подсказка
assignee: Используйте фильтр в поисках, чтобы найти элементы, назначенные себе или другим пользователям.
Пример:
is:open is:issue assignee:@me
Автосвязанные ссылки
Для упрощения перекрестного связывания различных элементов в рамках проекта GitHub предлагает сокращенный синтаксис. Например, если вы оставите комментарий Duplicate of #8, GitHub поймет, что #8 является проблемой и создаст для вас соответствующую ссылку.
GitHub также связывает для вас фиксации, если вы вставите первые семь символов их идентификаторов.
В нашем сценарии эти связи могут оказаться очень полезными для расширения рамок, если кто-то заранее подумает о предоставлении контекста. Например, текущее состояние боковой панели может иметь некоторые известные проблемы, связанные с зависимостью JavaScript. Если проблема с этой зависимостью была рассмотрена в другой проблеме, которая явно не упомянула "боковую панель", то было бы трудно найти. Однако если кто-то заранее подумает о том, чтобы связать эту проблему в обсуждении, это может сэкономить вам много времени. Не забывайте об этом, когда будете документировать проблемы и запросы на вытягивание.
Узнайте больше о ссылках и URL-адресах с автоматическим связыванием.
Включение пользователей в обсуждения с помощью @mention
Помимо связывания проблем и фиксаций, часто бывает полезно связывать других пользователей с обсуждениями. Простейший способ сделать это — использовать @mention. При таком упоминании упомянутый пользователь получает уведомление, чтобы он мог принять участие в обсуждении. Это также хороший способ идентифицировать людей, связанных с проблемами, после того, как эти проблемы были закрыты.