Рабочее пространство для лабораторной работы
При выполнении лабораторной работы следует придерживаться структуры рабочего пространства.
Содержание
1 Основные идеи
- Стандартные соглашения об именах
- Стандартное соглашение для путей к файлам
- Стандартная настройка курса внутри шаблона курса
2 Используемые стандарты и программные продукты
- Стандарт Git Flow (см. Варианты Git Workflow).
- Стандарт Семантическое версионирование.
- Стандарт Общепринятые коммиты.
3 Дополнительное программное обеспечение
3.1 Средства разработки
3.1.1 Fedora
- Установите средства разработки:
sudo dnf -y group install development-tools
3.2 Quarto
3.2.1 Установка
Windows
- Chocolatey (см. Пакетный менеджер для Windows. Chocolatey):
choco install quarto
- Chocolatey (см. Пакетный менеджер для Windows. Chocolatey):
Linux
Linux в общем
- Установка с помощью скрипта:
#!/bin/bash ## Система TARGET=/opt TARGET_BIN=/usr/local/bin ## Домашний каталог # TARGET=~/opt # TARGET_BIN=~/.local/bin ## Получить тег TAG=`basename $(curl -sL -o /dev/null -w %{url_effective} https://github.com/quarto-dev/quarto-cli/releases/latest)` TAG=${TAG/v/} ## Скачать cd /tmp wget https://github.com/quarto-dev/quarto-cli/releases/download/v${TAG}/quarto-${TAG}-linux-amd64.tar.gz ## Распаковать mkdir -p ${TARGET} tar -C ${TARGET} -xvzf /tmp/quarto-${TAG}-linux-amd64.tar.gz mv ${TARGET}/quarto-${TAG} ${TARGET}/quarto ## Симлинк на исполняемый файл mkdir -p ${TARGET_BIN} ln -s ${TARGET}/quarto/bin/quarto ${TARGET_BIN}/quarto
- Установка с помощью скрипта:
Gentoo
- Gentoo, репозиторий karma (см. Gentoo. Репозиторий karma):
emerge quarto
- Gentoo, репозиторий karma (см. Gentoo. Репозиторий karma):
Arch
- Arch linux:
pacman -S quarto-cli-bin
- Manjaro linux:
pamac install quarto-cli-bin
- Arch linux:
Fedora
- Установка из CORP:
sudo dnf -y copr enable iucar/rstudio sudo dnf -y install quarto sudo dnf -y install libxcrypt-compat
- Установка из CORP:
3.3 Общепринятые коммиты
3.3.1 Установка Node.js
- На Node.js базируется программное обеспечение для семантического версионирования и общепринятых коммитов.
- Для управления пакетами лучше использовать
pnpm
, но можно иyarn
. - Gentoo
- Node.js:
emerge nodejs emerge yarn
- pnpm ставим из оверлея
guru
(см. Gentoo. Дополнительные репозитории):eselect repository enable guru emerge --sync guru emerge pnpm-bin
- Node.js:
- Ubuntu
apt-get install nodejs apt-get install yarn apt-get install pnpm
- Fedora
sudo dnf -y install nodejs sudo dnf -y install yarn pnpm
- Windows
- Chocolatey (см. Пакетный менеджер для Windows. Chocolatey):
choco install nodejs choco install yarn choco install pnpm
- Chocolatey (см. Пакетный менеджер для Windows. Chocolatey):
- MacOS
brew install node
3.3.2 Настройка Node.js
Для работы с Node.js добавим каталог с исполняемыми файлами, устанавливаемыми пакетным менеджером, в переменную PATH
.
- Linux
pnpm
- Запустите:
pnpm setup
- Перелогиньтесь, или выполните:
source ~/.bashrc
- Запустите:
yarn
- В файле
~/.bashrc
добавьте к переменнойPATH
:PATH=~/.yarn/bin:$PATH
- В файле
3.3.3 Установка git-flow
Linux
- Gentoo
emerge dev-vcs/git-flow
- Ubuntu
apt-get install git-flow
- Fedora
- Устанавливается из COPR:
sudo dnf -y copr enable elegos/gitflow sudo dnf install gitflow
- Устанавливается из COPR:
- Gentoo
Windows Git-flow входит в состав пакета git.
choco install git
MacOS
brew install git-flow
3.3.4 Общепринятые коммиты
commitizen
- Данная программа используется для помощи в форматировании коммитов.
- pnpm:
pnpm add -g commitizen
- yarn:
yarn global add commitizen
- pnpm:
- При этом устанавливается скрипт
git-cz
, который мы и будем использовать для коммитов.
- Данная программа используется для помощи в форматировании коммитов.
standard-version
- Данная программа автоматизирует изменение номера версии.
- pnpm:
pnpm add -g standard-version
- yarn:
yarn global add standard-version
- pnpm:
- Данная программа автоматизирует изменение номера версии.
4 Общие правила
Для именования каталогов и файлов будем использовать соглашение Denote (см. Denote. Соглашение об именовании).
Рабочее пространство по предмету располагается в следующей иерархии:
~/work/study/ └── <учебный год>/ └── <учебный год>==<код предмета>/
Например, для 2025-2026 учебного года (второй семестр) и предмета «Операционные системы» (код предмета
os-intro
) структура каталогов примет следующий вид:~/work/study/ └── 2026-1/ └── 2026-1==os-intro/
Название проекта на хостинге git имеет вид:
<учебный год>--study--<код предмета>
Например, для 2025-2026 учебного года и предмета «Операционные системы» (код предмета
os-intro
) название проекта примет следующий вид:2026-1--study--os-intro
Каталог для лабораторных работ имеет вид
labs
.Каталоги для лабораторных работ имеют вид
lab<номер>
, например:lab01
,lab02
и т.д.Каталог для групповых проектов имеет вид
group-project
.Каталог для персональных проектов имеет вид
personal-project
.Каталог для внешнего курса имеет вид
external-course
.Если проектов несколько, то они нумеруются подобно лабораторным работам.
Этапы проекта обозначаются как
stage<номер>
.
5 Шаблон для рабочего пространства
5.1 Сознание репозитория курса на основе шаблона
- Репозиторий на основе шаблона можно создать либо вручную, через web-интерфейс, либо с помощью утилит
gh
(см. github: утилиты командной строки).
5.1.1 Создание с помощью утилит
- Создание выглядит следующим образом:
gh repo create <new-repo-name> --template="<owner/template-repo>"
- Например, для 2024-2025 учебного года и предмета «Операционные системы» (аббревиатура предмета —
os-intro
) создание репозитория примет следующий вид:mkdir -p ~/work/study/2026-1/2026-1==study--os-intro cd ~/work/study/2026-1/2026-1==study--os-intro gh repo create 2026-1--study--os-intro --template=yamadharma/course-directory-student-template --public git clone --recursive git@github.com:<owner>/2026-1--study--os-intro.git
5.1.2 Создание вручную
- Сделать свой репозиторий на основе шаблона можно и вручную: https://docs.github.com/ru/repositories/creating-and-managing-repositories/creating-a-repository-from-a-template.
5.2 Структура шаблона
- Посмотреть доступные цели
make
:make help
- Посмотреть список доступных курсов:
make list
- При создании структуры название курса берётся из следующих мест:
- название курса находится в файле
COURSE
; - каталог курса называется как аббревиатура курса.
- название курса находится в файле
5.3 Настройка каталога курса
- Перейдите в каталог курса:
cd ~/work/study/2026-1/2026-1==study--os-intro/2026-1--study--os-intro
- Создайте необходимые каталоги:
echo os-intro > COURSE make prepare
- Отправьте файлы на сервер:
git add . git commit -am 'feat(main): make course structure' git push
5.4 Использование git flow
- Будем использовать для работы git flow (см. Рабочий процесс Gitflow).
- Практический сценарий использования git
5.4.1 Конфигурация git-flow
- Инициализируем git-flowПрефикс для ярлыков установим в
git flow init
v
. - Проверьте, что Вы на ветке
develop
:git branch
- Загрузите весь репозиторий в хранилище:
git push -u --all
- Создадим релиз с версией 1.0.0
git flow release start 1.0.0
- Создадим журнал изменений
standard-changelog --first-release
- Добавим журнал изменений в индекс
git add CHANGELOG.md git commit -am 'chore(site): add changelog'
- Зальём релизную ветку в основную ветку
git flow release finish 1.0.0
- Отправим данные на github
git push --all git push --tags
- Скопируем CHANGELOG.md в каталог
release
:mkdir -p ../release cp CHANGELOG.md ../release
- Создадим релиз на github. Для этого будем использовать утилиты работы с github (см. github: утилиты командной строки):
gh release create v1.0.0 -F ../release/CHANGELOG.md