Основная единица организации кода на Gitlab это проект. Проект это пара из основного репозитория, связанного репозитория для Wiki, и описание различных интеграций с внешними сервисами и инструментам.
Gitlab позволяет иметь произвольное количество уровней иерархии для "директории", в которой будет находиться проект:
- Группа
- Подгруппа1
- Подгруппа подгруппы 1
- Проект
- Проект подгруппы 1...
- Подгруппа подгруппы 1
- Подгруппа1
Мы предлагаем следующую схему организации курсов:
-
Название-курса
/ gitlab-группа.-
Название-курса-или-подкурса-[fall|spring]-YYYY
/ gitlab-подгруппа.-
Один проект с именем
main
, содержащий основные материалы по курсу: организационную информацию, конспекты лекций, ссылки на дополнительные материалы и т.д. -
По одному проекту на каждую лабораторную работу; студенты могут делать их fork'и.
Для каждого задания используйте имя начинающееся на
assignment-
-
По одному проекту на каждый учебный проект, курсовую работу и т.д.
-
Подгруппу
staff
, доступную только команде курса. В ней выкладываются решения задач, инструкции по приёму лабораторных работ и т.д.
-
-
Например:
-
low-level-programming
-
low-level-programming-fall-2020
main
-
staff
(подгруппа) assignment-memory-allocator
assignment-image-rotation
-
Имея проект в одной группе/подгруппе можно сделать его fork в другую. Например, это полезно когда лабораторные работы из года в год не изменяются. Предлагается каждый год создавать новую подгруппу и населять её актуальными версиями материалов. Для этого можно или переносить проекты в новый namespace, или, что лучше, делать форки. Так предыдущие версии курсов остаются для истории; кроме того, они иногда необходимы для студентов, которые переводятся, или которым по каким-то причинам нужно пройти старую версию курса.