diff --git a/python/issues.ipynb b/python/issues.ipynb new file mode 100644 index 00000000..c0234e7f --- /dev/null +++ b/python/issues.ipynb @@ -0,0 +1,444 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "id": "8b3b5b75", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'Task issues 2 , made by Gosha Gosha'" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\"\"\"Task issues 2 , made by Gosha Gosha.\"\"\"" + ] + }, + { + "cell_type": "markdown", + "id": "5b5cb9f7", + "metadata": {}, + "source": [ + "# Ответы по работе с Issues на GitHub\n", + "\n", + "## Общие вопросы\n", + "\n", + "### 1. Что такое Issues на GitHub и для чего они используются?\n", + "\n", + "Issues это задачи, сообщения об ошибках, предложения новых функций и вопросы, связанные с репозиторием. Они используются для планирования работы, обсуждения изменений и отслеживания выполнения задач.\n", + "\n", + "### 2. Чем Issues отличаются от других инструментов управления задачами?\n", + "\n", + "Issues непосредственно связаны с GitHub-репозиторием. Их можно связывать с ветками, коммитами, Pull Request, Milestones и Projects. Это позволяет обсуждать задачу и одновременно видеть код, с помощью которого она решается.\n", + "\n", + "В отличие от отдельных систем управления проектами, Issues являются частью процесса разработки и не требуют переноса информации о задаче в другой сервис.\n", + "\n", + "### 3. Какие основные компоненты есть у каждого Issue?\n", + "\n", + "Основные компоненты Issue:\n", + "\n", + "* уникальный номер;\n", + "* заголовок;\n", + "* описание;\n", + "* автор;\n", + "* состояние Open или Closed;\n", + "* комментарии.\n", + "\n", + "Дополнительно можно указать:\n", + "\n", + "* Assignees;\n", + "* Labels;\n", + "* Milestone;\n", + "* Project;\n", + "* тип задачи;\n", + "* связанные ветки и Pull Request;\n", + "* родительские задачи, подзадачи и зависимости.\n", + "\n", + "## Создание Issues\n", + "\n", + "### 4. Как создать новое Issue в репозитории?\n", + "\n", + "Нужно открыть репозиторий, перейти во вкладку **Issues**, нажать **New issue**, выбрать шаблон или пустое Issue, заполнить заголовок и описание, затем нажать **Submit new issue**.\n", + "\n", + "### 5. Какие данные рекомендуется указывать в описании Issue?\n", + "\n", + "В описании рекомендуется указать:\n", + "\n", + "* суть проблемы или задачи;\n", + "* ожидаемый результат;\n", + "* фактический результат;\n", + "* шаги для воспроизведения ошибки;\n", + "* версию программы и рабочее окружение;\n", + "* примеры кода;\n", + "* текст ошибки и логи;\n", + "* скриншоты;\n", + "* критерии завершения задачи.\n", + "\n", + "Описание должно содержать достаточно информации, чтобы другой участник мог понять и воспроизвести проблему.\n", + "\n", + "### 6. Какие Labels можно добавить к Issue? Какие из них стандартные?\n", + "\n", + "В репозитории можно создавать собственные Labels, например `priority: high`, `frontend`, `backend`, `testing` или `security`.\n", + "\n", + "Стандартные Labels GitHub:\n", + "\n", + "* `bug`, ошибка;\n", + "* `documentation`, изменение документации;\n", + "* `duplicate`, дубликат;\n", + "* `enhancement`, новая возможность или улучшение;\n", + "* `good first issue`, задача для начинающих;\n", + "* `help wanted`, требуется помощь;\n", + "* `invalid`, некорректное или неактуальное Issue;\n", + "* `question`, вопрос или запрос дополнительной информации;\n", + "* `wontfix`, задача не будет исправляться.\n", + "\n", + "Стандартные Labels можно изменять и удалять.\n", + "\n", + "### 7. Как прикрепить Assignees к Issue?\n", + "\n", + "Нужно открыть Issue, найти блок **Assignees** в правой части страницы, нажать на него и выбрать пользователя. Assignee показывает, кто отвечает за выполнение задачи. К одному Issue можно назначить несколько исполнителей.\n", + "\n", + "## Работа с Issues\n", + "\n", + "### 8. Как использовать Labels для классификации задач?\n", + "\n", + "Labels позволяют группировать Issues по типу, важности, состоянию или области проекта.\n", + "\n", + "Например:\n", + "\n", + "* `bug`, ошибка;\n", + "* `enhancement`, новая возможность;\n", + "* `priority: high`, высокий приоритет;\n", + "* `frontend`, задача интерфейса;\n", + "* `in progress`, задача выполняется;\n", + "* `needs review`, требуется проверка.\n", + "\n", + "После добавления Labels список Issues можно фильтровать по нужным меткам.\n", + "\n", + "### 9. Для чего нужен Milestone и как связать его с Issue?\n", + "\n", + "Milestone объединяет несколько Issues и Pull Request, относящихся к одной цели, версии или этапу проекта.\n", + "\n", + "Например, Milestone `Version 2.0` может содержать все задачи, которые должны быть завершены перед выпуском этой версии.\n", + "\n", + "Чтобы связать Issue с Milestone, нужно открыть Issue, нажать **Milestone** в правой части страницы и выбрать нужный Milestone. GitHub показывает срок выполнения, количество открытых и закрытых задач и процент готовности Milestone.\n", + "\n", + "### 10. Как привязать Issue к Pull Request?\n", + "\n", + "В описании Pull Request можно указать ключевое слово и номер Issue:\n", + "\n", + "```text\n", + "Closes #15\n", + "```\n", + "\n", + "Также поддерживаются слова:\n", + "\n", + "```text\n", + "Fixes #15\n", + "Resolves #15\n", + "```\n", + "\n", + "После слияния Pull Request в основную ветку связанное Issue автоматически закроется.\n", + "\n", + "Связь также можно создать вручную через раздел **Development** в правой части Issue или Pull Request.\n", + "\n", + "### 11. Как добавить комментарий к существующему Issue?\n", + "\n", + "Нужно открыть Issue, перейти к полю комментария в нижней части страницы, написать текст и нажать **Comment**.\n", + "\n", + "В комментарий можно добавлять Markdown, ссылки, изображения, фрагменты кода, упоминания пользователей и ссылки на другие Issues.\n", + "\n", + "## Закрытие и завершение Issues\n", + "\n", + "### 12. Как закрыть Issue вручную?\n", + "\n", + "Нужно открыть Issue и нажать кнопку **Close issue**. При необходимости можно сначала оставить комментарий с объяснением причины закрытия.\n", + "\n", + "### 13. Можно ли автоматически закрыть Issue с помощью сообщения в коммите или Pull Request?\n", + "\n", + "Да. В описании Pull Request или сообщении коммита нужно использовать ключевое слово и номер Issue:\n", + "\n", + "```text\n", + "Closes #25\n", + "```\n", + "\n", + "```text\n", + "Fixes #25\n", + "```\n", + "\n", + "```text\n", + "Resolves #25\n", + "```\n", + "\n", + "Issue будет автоматически закрыто после попадания соответствующего Pull Request или коммита в основную ветку репозитория.\n", + "\n", + "### 14. Как повторно открыть закрытое Issue?\n", + "\n", + "Нужно открыть закрытое Issue и нажать **Reopen issue**. После этого его состояние снова изменится на Open.\n", + "\n", + "Перед повторным открытием желательно оставить комментарий и объяснить, почему задача ещё не завершена.\n", + "\n", + "## Фильтрация и поиск\n", + "\n", + "### 15. Как найти все открытые или закрытые Issues в репозитории?\n", + "\n", + "Нужно открыть вкладку **Issues** и выбрать состояние **Open** или **Closed**.\n", + "\n", + "Также можно использовать поисковые запросы:\n", + "\n", + "```text\n", + "is:issue is:open\n", + "```\n", + "\n", + "```text\n", + "is:issue is:closed\n", + "```\n", + "\n", + "Фильтр `is:issue` исключает Pull Request из результатов.\n", + "\n", + "### 16. Как использовать фильтры для поиска Issues?\n", + "\n", + "В строке поиска можно использовать специальные квалификаторы:\n", + "\n", + "```text\n", + "is:open\n", + "```\n", + "\n", + "Только открытые Issues.\n", + "\n", + "```text\n", + "is:closed\n", + "```\n", + "\n", + "Только закрытые Issues.\n", + "\n", + "```text\n", + "label:bug\n", + "```\n", + "\n", + "Issues с меткой `bug`.\n", + "\n", + "```text\n", + "assignee:@me\n", + "```\n", + "\n", + "Issues, назначенные текущему пользователю.\n", + "\n", + "```text\n", + "author:username\n", + "```\n", + "\n", + "Issues, созданные определённым пользователем.\n", + "\n", + "```text\n", + "milestone:\"Version 2.0\"\n", + "```\n", + "\n", + "Issues из определённого Milestone.\n", + "\n", + "Фильтры можно объединять:\n", + "\n", + "```text\n", + "is:issue is:open label:bug assignee:@me\n", + "```\n", + "\n", + "Такой запрос покажет открытые ошибки, назначенные текущему пользователю.\n", + "\n", + "### 17. Как сортировать Issues по приоритету, дате создания или другим параметрам?\n", + "\n", + "В списке Issues нужно открыть меню **Sort**.\n", + "\n", + "Доступна сортировка по:\n", + "\n", + "* дате создания, сначала новые или старые;\n", + "* дате обновления;\n", + "* количеству комментариев;\n", + "* количеству реакций.\n", + "\n", + "Отдельной стандартной сортировки по приоритету в обычном списке Issues нет. Приоритет можно обозначить Labels, например `priority: high`, или добавить поле `Priority` в GitHub Projects и сортировать задачи внутри Project.\n", + "\n", + "## Интеграции и автоматизация\n", + "\n", + "### 18. Как настроить автоматические уведомления о новых или изменённых Issues?\n", + "\n", + "На странице репозитория нужно открыть меню **Watch**, выбрать **Custom** и включить уведомления для Issues.\n", + "\n", + "Для отдельного Issue можно включить подписку через кнопку **Subscribe**. Уведомления могут отображаться на GitHub или приходить по электронной почте, в зависимости от настроек аккаунта.\n", + "\n", + "### 19. Что такое Projects и как связать их с Issues?\n", + "\n", + "GitHub Projects это инструмент планирования, в котором задачи можно отображать в виде таблицы, доски или дорожной карты.\n", + "\n", + "В Projects можно использовать:\n", + "\n", + "* статусы;\n", + "* приоритеты;\n", + "* даты;\n", + "* исполнителей;\n", + "* пользовательские поля;\n", + "* фильтры;\n", + "* автоматические рабочие процессы.\n", + "\n", + "Чтобы добавить Issue в Project, нужно открыть Issue, нажать **Projects** в правой части страницы и выбрать нужный проект. Issue также можно добавить непосредственно из самого Project.\n", + "\n", + "### 20. Какие инструменты можно использовать для автоматизации работы с Issues?\n", + "\n", + "Для автоматизации можно использовать:\n", + "\n", + "* GitHub Actions;\n", + "* GitHub Apps;\n", + "* ботов;\n", + "* Webhooks;\n", + "* REST API;\n", + "* GraphQL API;\n", + "* интеграции с мессенджерами и системами управления проектами.\n", + "\n", + "Например, Webhook может отправить данные на внешний сервер при создании, изменении или закрытии Issue. Бот или GitHub Action может автоматически добавить Label, назначить исполнителя, оставить комментарий или закрыть неактуальную задачу.\n", + "\n", + "## Коллаборация\n", + "\n", + "### 21. Как упомянуть другого пользователя в комментарии к Issue?\n", + "\n", + "Нужно написать символ `@` и имя пользователя:\n", + "\n", + "```text\n", + "@username, проверьте, пожалуйста, эту ошибку.\n", + "```\n", + "\n", + "Пользователь получит уведомление об упоминании, если это разрешено его настройками.\n", + "\n", + "### 22. Как запросить дополнительные данные у автора Issue?\n", + "\n", + "Нужно оставить комментарий и конкретно указать, какой информации не хватает.\n", + "\n", + "Например:\n", + "\n", + "```text\n", + "Пожалуйста, укажите версию Python, операционную систему и полный текст ошибки. Также добавьте шаги, с помощью которых можно воспроизвести проблему.\n", + "```\n", + "\n", + "При необходимости можно добавить Label `question` или собственную метку `needs more information`.\n", + "\n", + "### 23. Что делать, если Issue неактуально или его нужно объединить с другим?\n", + "\n", + "Если Issue больше неактуально, нужно оставить комментарий с объяснением и закрыть его.\n", + "\n", + "Если Issue является дубликатом, можно написать:\n", + "\n", + "```text\n", + "Duplicate of #42\n", + "```\n", + "\n", + "GitHub создаст связь с основным Issue. После этого дубликат можно закрыть и добавить Label `duplicate`.\n", + "\n", + "GitHub не объединяет содержимое двух Issues в одно автоматически. Нужно выбрать основное Issue, перенести туда важную информацию и закрыть дубликат.\n", + "\n", + "## Практические аспекты\n", + "\n", + "### 24. Как использовать шаблоны для создания Issues?\n", + "\n", + "Шаблоны позволяют заранее определить структуру Issue и указать, какую информацию должен предоставить автор.\n", + "\n", + "Шаблоны можно создать через:\n", + "\n", + "```text\n", + "Settings → General → Features → Issues → Set up templates\n", + "```\n", + "\n", + "Файлы шаблонов хранятся в каталоге:\n", + "\n", + "```text\n", + ".github/ISSUE_TEMPLATE/\n", + "```\n", + "\n", + "Можно создать отдельные шаблоны для ошибок, предложений новых функций и других типов обращений. После добавления шаблонов пользователь выбирает подходящий вариант при создании Issue.\n", + "\n", + "### 25. Что такое Linked Issues и как создать связь между задачами?\n", + "\n", + "Linked Issues это Issues, между которыми создана логическая связь.\n", + "\n", + "Связь можно создать несколькими способами:\n", + "\n", + "1. Указать номер другого Issue в описании или комментарии:\n", + "\n", + "```text\n", + "Связано с #15\n", + "```\n", + "\n", + "2. Создать подзадачу через **Create sub-issue**.\n", + "\n", + "3. Добавить существующее Issue как подзадачу через **Add existing issue**.\n", + "\n", + "4. Указать зависимость, например что одно Issue блокируется другим.\n", + "\n", + "5. Связать Issue с веткой или Pull Request через раздел **Development**.\n", + "\n", + "Подзадачи используются для разделения большой задачи на части, а зависимости показывают, какая задача блокирует выполнение другой.\n", + "\n", + "### 26. Какие метрики можно отслеживать с помощью Issues?\n", + "\n", + "С помощью Issues можно отслеживать:\n", + "\n", + "* количество открытых и закрытых задач;\n", + "* процент выполнения Milestone;\n", + "* время от создания до закрытия;\n", + "* время первого ответа;\n", + "* количество задач, выполненных за определённый период;\n", + "* количество повторно открытых задач;\n", + "* количество задач у каждого исполнителя;\n", + "* распределение задач по Labels;\n", + "* прогресс выполнения подзадач.\n", + "\n", + "GitHub показывает даты создания, обновления и закрытия Issues. Milestones показывают процент выполнения и количество открытых и закрытых задач. Более сложные метрики можно получать через Projects, API или внешние аналитические инструменты.\n", + "\n", + "### 27. Какие best practices рекомендуются при работе с Issues в команде?\n", + "\n", + "Рекомендуется соблюдать следующие правила:\n", + "\n", + "1. Создавать одно Issue для одной конкретной задачи.\n", + "2. Использовать короткий и понятный заголовок.\n", + "3. Подробно описывать проблему и ожидаемый результат.\n", + "4. Добавлять шаги воспроизведения для ошибок.\n", + "5. Использовать единый набор Labels.\n", + "6. Назначать ответственного исполнителя.\n", + "7. Связывать Issue с Milestone и Project.\n", + "8. Связывать коммиты и Pull Request с номером Issue.\n", + "9. Регулярно обновлять статус задачи.\n", + "10. Обсуждать изменения в комментариях, чтобы сохранить историю решений.\n", + "11. Закрывать завершённые и неактуальные Issues.\n", + "12. Помечать дубликаты и указывать основное Issue.\n", + "13. Использовать шаблоны для одинакового оформления задач.\n", + "14. Разбивать крупные задачи на подзадачи.\n", + "15. Не хранить в Issues пароли, токены и другие конфиденциальные данные.\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "SENATOROV", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.13.14" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/python/issues.py b/python/issues.py new file mode 100644 index 00000000..57aa6dee --- /dev/null +++ b/python/issues.py @@ -0,0 +1,394 @@ +"""Task issues 2 , made by Gosha Gosha.""" + +# # Ответы по работе с Issues на GitHub +# +# ## Общие вопросы +# +# ### 1. Что такое Issues на GitHub и для чего они используются? +# +# Issues это задачи, сообщения об ошибках, предложения новых функций и вопросы, связанные с репозиторием. Они используются для планирования работы, обсуждения изменений и отслеживания выполнения задач. +# +# ### 2. Чем Issues отличаются от других инструментов управления задачами? +# +# Issues непосредственно связаны с GitHub-репозиторием. Их можно связывать с ветками, коммитами, Pull Request, Milestones и Projects. Это позволяет обсуждать задачу и одновременно видеть код, с помощью которого она решается. +# +# В отличие от отдельных систем управления проектами, Issues являются частью процесса разработки и не требуют переноса информации о задаче в другой сервис. +# +# ### 3. Какие основные компоненты есть у каждого Issue? +# +# Основные компоненты Issue: +# +# * уникальный номер; +# * заголовок; +# * описание; +# * автор; +# * состояние Open или Closed; +# * комментарии. +# +# Дополнительно можно указать: +# +# * Assignees; +# * Labels; +# * Milestone; +# * Project; +# * тип задачи; +# * связанные ветки и Pull Request; +# * родительские задачи, подзадачи и зависимости. +# +# ## Создание Issues +# +# ### 4. Как создать новое Issue в репозитории? +# +# Нужно открыть репозиторий, перейти во вкладку **Issues**, нажать **New issue**, выбрать шаблон или пустое Issue, заполнить заголовок и описание, затем нажать **Submit new issue**. +# +# ### 5. Какие данные рекомендуется указывать в описании Issue? +# +# В описании рекомендуется указать: +# +# * суть проблемы или задачи; +# * ожидаемый результат; +# * фактический результат; +# * шаги для воспроизведения ошибки; +# * версию программы и рабочее окружение; +# * примеры кода; +# * текст ошибки и логи; +# * скриншоты; +# * критерии завершения задачи. +# +# Описание должно содержать достаточно информации, чтобы другой участник мог понять и воспроизвести проблему. +# +# ### 6. Какие Labels можно добавить к Issue? Какие из них стандартные? +# +# В репозитории можно создавать собственные Labels, например `priority: high`, `frontend`, `backend`, `testing` или `security`. +# +# Стандартные Labels GitHub: +# +# * `bug`, ошибка; +# * `documentation`, изменение документации; +# * `duplicate`, дубликат; +# * `enhancement`, новая возможность или улучшение; +# * `good first issue`, задача для начинающих; +# * `help wanted`, требуется помощь; +# * `invalid`, некорректное или неактуальное Issue; +# * `question`, вопрос или запрос дополнительной информации; +# * `wontfix`, задача не будет исправляться. +# +# Стандартные Labels можно изменять и удалять. +# +# ### 7. Как прикрепить Assignees к Issue? +# +# Нужно открыть Issue, найти блок **Assignees** в правой части страницы, нажать на него и выбрать пользователя. Assignee показывает, кто отвечает за выполнение задачи. К одному Issue можно назначить несколько исполнителей. +# +# ## Работа с Issues +# +# ### 8. Как использовать Labels для классификации задач? +# +# Labels позволяют группировать Issues по типу, важности, состоянию или области проекта. +# +# Например: +# +# * `bug`, ошибка; +# * `enhancement`, новая возможность; +# * `priority: high`, высокий приоритет; +# * `frontend`, задача интерфейса; +# * `in progress`, задача выполняется; +# * `needs review`, требуется проверка. +# +# После добавления Labels список Issues можно фильтровать по нужным меткам. +# +# ### 9. Для чего нужен Milestone и как связать его с Issue? +# +# Milestone объединяет несколько Issues и Pull Request, относящихся к одной цели, версии или этапу проекта. +# +# Например, Milestone `Version 2.0` может содержать все задачи, которые должны быть завершены перед выпуском этой версии. +# +# Чтобы связать Issue с Milestone, нужно открыть Issue, нажать **Milestone** в правой части страницы и выбрать нужный Milestone. GitHub показывает срок выполнения, количество открытых и закрытых задач и процент готовности Milestone. +# +# ### 10. Как привязать Issue к Pull Request? +# +# В описании Pull Request можно указать ключевое слово и номер Issue: +# +# ```text +# Closes #15 +# ``` +# +# Также поддерживаются слова: +# +# ```text +# Fixes #15 +# Resolves #15 +# ``` +# +# После слияния Pull Request в основную ветку связанное Issue автоматически закроется. +# +# Связь также можно создать вручную через раздел **Development** в правой части Issue или Pull Request. +# +# ### 11. Как добавить комментарий к существующему Issue? +# +# Нужно открыть Issue, перейти к полю комментария в нижней части страницы, написать текст и нажать **Comment**. +# +# В комментарий можно добавлять Markdown, ссылки, изображения, фрагменты кода, упоминания пользователей и ссылки на другие Issues. +# +# ## Закрытие и завершение Issues +# +# ### 12. Как закрыть Issue вручную? +# +# Нужно открыть Issue и нажать кнопку **Close issue**. При необходимости можно сначала оставить комментарий с объяснением причины закрытия. +# +# ### 13. Можно ли автоматически закрыть Issue с помощью сообщения в коммите или Pull Request? +# +# Да. В описании Pull Request или сообщении коммита нужно использовать ключевое слово и номер Issue: +# +# ```text +# Closes #25 +# ``` +# +# ```text +# Fixes #25 +# ``` +# +# ```text +# Resolves #25 +# ``` +# +# Issue будет автоматически закрыто после попадания соответствующего Pull Request или коммита в основную ветку репозитория. +# +# ### 14. Как повторно открыть закрытое Issue? +# +# Нужно открыть закрытое Issue и нажать **Reopen issue**. После этого его состояние снова изменится на Open. +# +# Перед повторным открытием желательно оставить комментарий и объяснить, почему задача ещё не завершена. +# +# ## Фильтрация и поиск +# +# ### 15. Как найти все открытые или закрытые Issues в репозитории? +# +# Нужно открыть вкладку **Issues** и выбрать состояние **Open** или **Closed**. +# +# Также можно использовать поисковые запросы: +# +# ```text +# is:issue is:open +# ``` +# +# ```text +# is:issue is:closed +# ``` +# +# Фильтр `is:issue` исключает Pull Request из результатов. +# +# ### 16. Как использовать фильтры для поиска Issues? +# +# В строке поиска можно использовать специальные квалификаторы: +# +# ```text +# is:open +# ``` +# +# Только открытые Issues. +# +# ```text +# is:closed +# ``` +# +# Только закрытые Issues. +# +# ```text +# label:bug +# ``` +# +# Issues с меткой `bug`. +# +# ```text +# assignee:@me +# ``` +# +# Issues, назначенные текущему пользователю. +# +# ```text +# author:username +# ``` +# +# Issues, созданные определённым пользователем. +# +# ```text +# milestone:"Version 2.0" +# ``` +# +# Issues из определённого Milestone. +# +# Фильтры можно объединять: +# +# ```text +# is:issue is:open label:bug assignee:@me +# ``` +# +# Такой запрос покажет открытые ошибки, назначенные текущему пользователю. +# +# ### 17. Как сортировать Issues по приоритету, дате создания или другим параметрам? +# +# В списке Issues нужно открыть меню **Sort**. +# +# Доступна сортировка по: +# +# * дате создания, сначала новые или старые; +# * дате обновления; +# * количеству комментариев; +# * количеству реакций. +# +# Отдельной стандартной сортировки по приоритету в обычном списке Issues нет. Приоритет можно обозначить Labels, например `priority: high`, или добавить поле `Priority` в GitHub Projects и сортировать задачи внутри Project. +# +# ## Интеграции и автоматизация +# +# ### 18. Как настроить автоматические уведомления о новых или изменённых Issues? +# +# На странице репозитория нужно открыть меню **Watch**, выбрать **Custom** и включить уведомления для Issues. +# +# Для отдельного Issue можно включить подписку через кнопку **Subscribe**. Уведомления могут отображаться на GitHub или приходить по электронной почте, в зависимости от настроек аккаунта. +# +# ### 19. Что такое Projects и как связать их с Issues? +# +# GitHub Projects это инструмент планирования, в котором задачи можно отображать в виде таблицы, доски или дорожной карты. +# +# В Projects можно использовать: +# +# * статусы; +# * приоритеты; +# * даты; +# * исполнителей; +# * пользовательские поля; +# * фильтры; +# * автоматические рабочие процессы. +# +# Чтобы добавить Issue в Project, нужно открыть Issue, нажать **Projects** в правой части страницы и выбрать нужный проект. Issue также можно добавить непосредственно из самого Project. +# +# ### 20. Какие инструменты можно использовать для автоматизации работы с Issues? +# +# Для автоматизации можно использовать: +# +# * GitHub Actions; +# * GitHub Apps; +# * ботов; +# * Webhooks; +# * REST API; +# * GraphQL API; +# * интеграции с мессенджерами и системами управления проектами. +# +# Например, Webhook может отправить данные на внешний сервер при создании, изменении или закрытии Issue. Бот или GitHub Action может автоматически добавить Label, назначить исполнителя, оставить комментарий или закрыть неактуальную задачу. +# +# ## Коллаборация +# +# ### 21. Как упомянуть другого пользователя в комментарии к Issue? +# +# Нужно написать символ `@` и имя пользователя: +# +# ```text +# @username, проверьте, пожалуйста, эту ошибку. +# ``` +# +# Пользователь получит уведомление об упоминании, если это разрешено его настройками. +# +# ### 22. Как запросить дополнительные данные у автора Issue? +# +# Нужно оставить комментарий и конкретно указать, какой информации не хватает. +# +# Например: +# +# ```text +# Пожалуйста, укажите версию Python, операционную систему и полный текст ошибки. Также добавьте шаги, с помощью которых можно воспроизвести проблему. +# ``` +# +# При необходимости можно добавить Label `question` или собственную метку `needs more information`. +# +# ### 23. Что делать, если Issue неактуально или его нужно объединить с другим? +# +# Если Issue больше неактуально, нужно оставить комментарий с объяснением и закрыть его. +# +# Если Issue является дубликатом, можно написать: +# +# ```text +# Duplicate of #42 +# ``` +# +# GitHub создаст связь с основным Issue. После этого дубликат можно закрыть и добавить Label `duplicate`. +# +# GitHub не объединяет содержимое двух Issues в одно автоматически. Нужно выбрать основное Issue, перенести туда важную информацию и закрыть дубликат. +# +# ## Практические аспекты +# +# ### 24. Как использовать шаблоны для создания Issues? +# +# Шаблоны позволяют заранее определить структуру Issue и указать, какую информацию должен предоставить автор. +# +# Шаблоны можно создать через: +# +# ```text +# Settings → General → Features → Issues → Set up templates +# ``` +# +# Файлы шаблонов хранятся в каталоге: +# +# ```text +# .github/ISSUE_TEMPLATE/ +# ``` +# +# Можно создать отдельные шаблоны для ошибок, предложений новых функций и других типов обращений. После добавления шаблонов пользователь выбирает подходящий вариант при создании Issue. +# +# ### 25. Что такое Linked Issues и как создать связь между задачами? +# +# Linked Issues это Issues, между которыми создана логическая связь. +# +# Связь можно создать несколькими способами: +# +# 1. Указать номер другого Issue в описании или комментарии: +# +# ```text +# Связано с #15 +# ``` +# +# 2. Создать подзадачу через **Create sub-issue**. +# +# 3. Добавить существующее Issue как подзадачу через **Add existing issue**. +# +# 4. Указать зависимость, например что одно Issue блокируется другим. +# +# 5. Связать Issue с веткой или Pull Request через раздел **Development**. +# +# Подзадачи используются для разделения большой задачи на части, а зависимости показывают, какая задача блокирует выполнение другой. +# +# ### 26. Какие метрики можно отслеживать с помощью Issues? +# +# С помощью Issues можно отслеживать: +# +# * количество открытых и закрытых задач; +# * процент выполнения Milestone; +# * время от создания до закрытия; +# * время первого ответа; +# * количество задач, выполненных за определённый период; +# * количество повторно открытых задач; +# * количество задач у каждого исполнителя; +# * распределение задач по Labels; +# * прогресс выполнения подзадач. +# +# GitHub показывает даты создания, обновления и закрытия Issues. Milestones показывают процент выполнения и количество открытых и закрытых задач. Более сложные метрики можно получать через Projects, API или внешние аналитические инструменты. +# +# ### 27. Какие best practices рекомендуются при работе с Issues в команде? +# +# Рекомендуется соблюдать следующие правила: +# +# 1. Создавать одно Issue для одной конкретной задачи. +# 2. Использовать короткий и понятный заголовок. +# 3. Подробно описывать проблему и ожидаемый результат. +# 4. Добавлять шаги воспроизведения для ошибок. +# 5. Использовать единый набор Labels. +# 6. Назначать ответственного исполнителя. +# 7. Связывать Issue с Milestone и Project. +# 8. Связывать коммиты и Pull Request с номером Issue. +# 9. Регулярно обновлять статус задачи. +# 10. Обсуждать изменения в комментариях, чтобы сохранить историю решений. +# 11. Закрывать завершённые и неактуальные Issues. +# 12. Помечать дубликаты и указывать основное Issue. +# 13. Использовать шаблоны для одинакового оформления задач. +# 14. Разбивать крупные задачи на подзадачи. +# 15. Не хранить в Issues пароли, токены и другие конфиденциальные данные. +#