Салют ,
Данная лабораторная работа посвящена изучению систем обмена данными. Работа позволит ознакомиться с базовыми навыками необходимыми для произведения commit changes, публикации изменений в удаленный репозиторий, обновлениями данных для них, fork и тд.
Для сдачи данной работы также будет требоваться ответить на дополнительные вопросы по описанным темам.
Структура репозитория лабораторной работы
Задание
- 1. Зарегистрироваться на почтовом сервисе Gmail. В случае наличия аккаунта - не требуется
- 2. Зарегистрироваться на сервисе совместной разработки GitHub. В случае наличия аккаунта требуется произвести дополнительные настройки и обновить данные персонификации
- 3. Отправить зарегистрированный адрес почтового ящика личным сообщением
- 4. Отправить зарегистрированный логин личным сообщением
- 5. Ознакомиться со ссылками учебного материала и формализованными требованиями из основного описания
- 6. Сгенерировать SSH ключ и добавить его в список ключей для сервиса GitHub
- 7. Сгенерировать Personal Token с правами gist и сохранить его в файл
- 8. Сгенерировать GnuPG для подтверждения подписания коммитов и возможно использование Х.509 (включить в отчет описание, что такое
smimesign) - 9. Подготовить глобальные переменные окружения для GitHub
- 10. Ознакомиться с материалами
ghсервиса и использовать их для авторизации,commit,pull requestи тд. - 11. Выполнить инструкцию учебного материала
- 12. Оформить
README.mdпо аналогии и использоватьshield, etc. - 13. Составить
gistотчет и отправить ссылку личным сообщением
Tutorial
-
Подготовка пространства: установить Oracle VMBox и монтировать образ Ubuntu, Fedora, FreeBSD, либо использовать личное устройство
- Помощь для корректной настройки образа виртуальной машины или используйте иной материал. Обратите внимание на расширение при установке, сайзинг, ограничение памяти, выделяемый ресурс от своей рабочей машины.
-
Подготовить переменные окружения через конфигурацию git config на одном из трёх уровней:
- Локальный (--local) - только для текущего репозитория, файл .git/config
- Глобальный (--global) - для пользователя, файл ~/.gitconfig
- Системный (--system) - для всех пользователей /etc/gitconfig
$ git config --global user.name "Ваше Имя" # Установить имя пользователя (глобально)
$ git config --global user.email "email@example.com" # Установить email пользователя (глобально)
$ git config --global core.editor "vim" # Установить текстовый редактор по умолчанию или nano
$ git config unset --global user.email # Удалить глобальную настройку email. Допустима замена "unset" на "--unset"
$ git config edit --global # Редактирование конфига на указанном уровне в редакторе "core.editor". Допустима замена "edit" на "-e"
$ git config list # Показать все текущие настройки. Допустима замена "list" на "--list"
$ git config user.name # Показать имя пользователя. Без атрибутов — локальная настройка
$ git config --global alias.co checkout # Создать псевдоним (например, "git co" вместо "git checkout")
$ git config --global help.autocorrect prompt # Предложения автозамены при ошибке набора команды.
$ git config --global core.autocrlf true # Настроить конвертацию концов строк (для Windows: "true", для Linux/macOS: "input")
$ git config --global credential.helper cache # Кэшировать учётные данные. По умолчанию 15 минут. Укажи "cache --timeout=3600" для часа. Не работает для пассфраз ключей.
$ git config --global commit.gpgsign true # Настроить автоматическое подписание коммитов
- Поставьте на машину необходимые компоненты для
gitscm,GitHub CLI - Поставьте дополнительные пакеты для своего удобства, рекомендуется поставить
zsh
$ echo $SHELL
$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" # Homebrew
$ brew install zsh
$ zsh --version
GnuPG и используйте для подписания коммитов флагом -S
$ gpg --full-generate-key # Создание ключа с выбором его типа
$ gpg --list-secret-keys --keyid-format=long # Вывод всех ключей в длинной форме
$ gpg --armor --export xxxxxx # Экспорт публичного ключа в ASCII формате (замените xxxxxx на ваш ключ)
$ git config --global --unset gpg.format
$ git config --global user.signingkey # Внесение вложенного ключа (обоих)
$ git config --global commit.gpgsign true # Подпись всех фиксаций
$ git config --global tag.gpgSign true # Подпись всех тегов
- Подготовьте и опишите материалы в отчете:
- Создайте локальный репозиторий на машине
- Проинициализируйте репозиторий
- Авторизуйтесь и используйте
GitHub CLIдля создания удаленного репозитория - Создайте пустой README.md
- Используйте указание URL своего созданного репозитория для присвоения ветки
masterстатусаorigin - В локальном репозитории и сделайте
commit - Сделайте публикацию своего
commitс флагом-Sв удаленный репозиторий - Создайте файл
hello.pyв локальном репозитории. Реализуйте Hello appsec world на языке python используя несколько интерпретаторов с "грязным" кодом - Сделайте
commitс флагом-S - Измените исходный код, что бы скрипт запрашивал имя пользователя и выводил
Hello appsec world from @name - Сделайте
commitс флагом-Sи сделайте публикацию в удаленный репозиторий. Проверьте вывод истории изменений - В локальном репозитории создайте ветку
patch1и внесите изменения исправлению кода и модернизации до следующего вида, что бы код был рабочим. Сделайте публикацию своегоcommitс флагом-Sв удаленный репозиторий:
import typer
def main(
name: str,
lastname: str = typer.Option("", help="Фамилия пользователя."),
formal: bool = typer.Option(False, "--formal", "-f", help="Использовать формальное приветствие."),
):
"""
Говорит "Привет" пользователю, опционально используя фамилию и формальный стиль.
"""
if formal:
print(f"Добрый день, {name} {lastname}!")
else:
print(f"Привет, {name}!")
if __name__ == "__main__":
typer.run(main)
- Доработайте материалы и также опишите их в отчете:
- Проверьте, что ветка
patch1в удалённом репозитории - Создайте
pull-requestв видеpatch1 -> master - В ветке
patch1добавьте в исходный код комментарии и убедитесь, что есть указанные изменения вpull-request - В удалённый репозитории выполните слияние
pull-requestдляpatch1 -> masterи удалите веткуpatch1 - Стяните последние актуальные изменения и просмотрите историю изменений для
master - Удалите локальную ветку
patch1 - Создайте новую локальную ветку
patch2. - Измените code style по своему усмотрению
- Сделайте публикацию своего
commitс флагом-Sв удаленный репозиторий и создайте pull-requestpatch2 -> master - В ветке master удаленного репозитория явно измените комментарий
- Увидите, что в
pull-requestпоявились расхождения - Локально сделайте rebase и исправьте расхождения (это называется конфликт)
- Сделайте
commitи опубликуйте изменения в веткеpatch2 - Убедитесь, что пропали конфликтны.
- Сделайте
mergeдляpull-requestpatch2 -> master. - Подготовьте отчет
gist. - Продемонстрируйте в материалах отчета историю коммитов на локальном и удаленном репозитории.
- Проверьте, что ветка
Links
Copyright © 2025 Elijah S Shmakov

