Первый цикл: Issue → Branch → Pull Request
Issue → ветка → код и тесты → Pull Request → CI → слияние — цикл, который повторяется для большинства задач SafeSort, но не по жёсткому правилу «один Issue — один PR».
Issue сформулирован — теперь разберём полный цикл его жизни, от постановки задачи до закрытия. Этот цикл повторяется для большинства задач SafeSort, начиная со следующей части главы — но не по жёсткому правилу «один Issue — один Pull Request», а так, как реально удобно ложится работа.
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 #1, GitHub автоматически закрывает Issue №1 в момент слияния этого PR — вручную закрывать Issue не нужно. Ничто не мешает написать Closes #3, Closes #6, если один PR решает сразу две тесно связанные задачи — именно так и произошло в репозитории SafeSort с планом перемещений и обработкой конфликтов имён.Следующая часть главы проходит этот цикл по-настоящему, шаг за шагом, для первой реальной задачи — сканера каталогов.
Коротко
- Issue → ветка → код и тесты → Pull Request → CI и проверка → слияние — полный цикл одной задачи.
- «Closes #N» в описании Pull Request закрывает Issue автоматически при слиянии.
- Этот цикл описывает большинство задач SafeSort, но не жёсткое правило — один PR иногда закрывает несколько тесно связанных Issues, а часть задач закрывается без отдельного PR.