Продолжу выкладывание примеров использования GitHub'а как инструмента обучения.
Вариант командной работы с несколькими репозиториями
Расскажу про "самый приближённый" к реалиям вариант, когда в рамках реализации одной программы возникают подпроекты и над ними трудятся разные команды в разных репозиториях.
Примерный порядок действия
Часть действий повторяются из предыдущего примера
Создаёте аккаунт организации
Добавляете в него студентов.
Создаёте репозиторий. В README.md добавляете текст задания. Также наполняете репозиторий предварительно необходимым минимумом (нужными файлами для выполнения задания). Создаёте необходимые ветви. Обычно создаю ветвь dev или develop
Студенты получив задания, клонируют репозиторий себе на локальные машины.
По мере обсуждения решения выявляются подпроекты. Создаются команды под каждый подпроект. Для каждого подпроекта создаётся свой репозиторий с предварительным наполнением.
Команды выполняют задания, коммитят, пушат. Задания можно выдавать как через
issues
, так и какой-нибудь сервис с Kanban или Scrum
Создают запрос на слияние
Проверяете. Оставляете комментарии либо ко всему заданию целиком, либо к его отдельным частям.
Создаются релизы. Готовые DLL или ещё что берётся из релизов и подключается в основной проект.
В каждой команде ведётся техдокументация.
Плюсы и минусы
Плюсы:
Более приближенный к реальности вариант моделирования
Можно назначать студентов в качестве ревьюеров кода. Даже преподавательского. Я люблю делать в коде специально ошибки как явные, так и неявные, чтобы студенты их находили и исправляли.
Каждая команда работает над своим подпроектом
Студенты пробуют межкомандное взаимодействие при разработке одного большого проекта.
Минусы:
Нужно создавать отдельный аккаунт для организации
Нужно объяснить как работать с ветками и следить, чтобы пушили в нужную ветку.
Нужно объяснять что такое релиз, как происходит версионирование.
Нужно объяснять как пишется и для чего нужна техдокументация.
Какие можно внести дополнения:
связать репозиторий с Kanban- или Scrum-сервисом, чтобы выдача заданий фиксировалась в карточках на досках
создавать не отдельные репозитории для каждого подпроекта, а использовать git submodules