Глава 23 · Часть II · Планируем SafeSort на GitHub

Первый цикл: Issue → Branch → Pull Request

Issue → ветка → код и тесты → Pull Request → CI → слияние — цикл, который повторяется для большинства задач SafeSort, но не по жёсткому правилу «один Issue — один PR».

SafeSort · Часть 2 из 6Планирование

Issue сформулирован — теперь разберём полный цикл его жизни, от постановки задачи до закрытия. Этот цикл повторяется для большинства задач SafeSort, начиная со следующей части главы — но не по жёсткому правилу «один Issue — один Pull Request», а так, как реально удобно ложится работа.

Issueзадачасформулирована,статус ReadyВеткастатус меняется на InProgressКод и тестыработа визолированной веткеPull Requestстатус меняется на InReviewCI и проверкаавтоматические тесты+ самопроверка FileschangedСлияниеIssue закрывается,статус — Done
Полный цикл одной задачи — от Issue до Done
Терминал
git switch -c feat/directory-scanner
# ...пишем код и тесты, коммитим изменения...
git push -u origin feat/directory-scanner

После push откройте репозиторий в браузере, нажмите Compare & pull request, выберите base: main, добавьте заголовок и строку Closes #1 в описание. git работает с историей, а создание Pull Request выполняется в интерфейсе GitHub.

Closes #N закрывает Issue автоматически — а один PR может закрыть сразу несколько
Если тело Pull Request содержит фразу вида Closes #1, GitHub автоматически закрывает Issue №1 в момент слияния этого PR — вручную закрывать Issue не нужно. Ничто не мешает написать Closes #3, Closes #6, если один PR решает сразу две тесно связанные задачи — именно так и произошло в репозитории SafeSort с планом перемещений и обработкой конфликтов имён.
Не каждый Issue закрывается через PR
Формулировка задачи через Issue не обязывает закрывать её именно Pull Request'ом. Если работа была сделана попутно, в рамках другой задачи, или не требовала кода вовсе, Issue можно закрыть вручную — с комментарием, объясняющим, что произошло. Реальная история проекта важнее искусственно ровной таблицы «N задач — N PR».

Следующая часть главы проходит этот цикл по-настоящему, шаг за шагом, для первой реальной задачи — сканера каталогов.

Официальная документация
About pull requests
Перевод и учебная адаптация официальной документации GitHub. Исходный материал — CC BY 4.0.

Коротко

  • Issue → ветка → код и тесты → Pull Request → CI и проверка → слияние — полный цикл одной задачи.
  • «Closes #N» в описании Pull Request закрывает Issue автоматически при слиянии.
  • Этот цикл описывает большинство задач SafeSort, но не жёсткое правило — один PR иногда закрывает несколько тесно связанных Issues, а часть задач закрывается без отдельного PR.