09.03 Работа с исходным кодом
TODO: первые ДВА занятия проводить с запретом использования личных ноутбуков. Чтобы люди освоили работу с удаленным репозиторием!
- Структура учебной площадки:
- Студенческие логины
- Демо-экран
Использование демо-экрана
Простейший workflow работы с git
- Создание пустого bare репозитория git init --bare repo
- Синхронизация с опубликованным хранилищем:
- Клонирование (git clone URL-откуда куда) — git clone repo work
- Создание/редактирование файлов
- Добавление файлов к списку публикации (git add файлы)
- Создание комплекта изменений (git commit)
- описание изменений
- при необходимости — переход на п. 1
- Задание редактора коммитов вместо vim
- export EDITOR=geany и попробовать
- Вариант: export EDITOR="evim -gf" (а также nano или mcedit)
- выбрать редактор и сохранить в конфигурации с помощью git config core.editor редактор
- Публикация одного или нескольких комплектов изменений (git push)
- при необходимости — переход на п. 1
Практическое занятие по пополнению хранилища: самостоятельно воспроизвести «простейший workflow» из предыдущего пункта
Созать bare repo («удалённый репорзиторий») newrepo
Склонировать, дальше работать с клоном («локальный репозиторий») project
Сделать два коммита в project
Запушить в newrepo
Отчитаться: git status чистый, в истории git log два коммита
- Мелкие хитрости
git commit -a — автоматический add для всех файлов, которые уже есть в рабочей копии (без Untracked)
вариант без редактирования git commit -m "сообщение"
Синхронизация локального хранилища с опубликованным (git pull)
например, два git clone, в одной из копий — commit и push, в другой — pull
Повторить упражнение:
Склонировать newrepo в otherproject
Создать в otherproject коммит и запушить в newrepo
Синхронизовать project с newrepo
SSH и ключи TODO prac.cs.msu.ru не умеет в современный ssh
ssh хост (prac.cs.msu.ru для тех, у кого есть факультетский аккаунт; у кого нет — localhost)
ssh-keygen с пассфразой
что такое открытый (.ssh/id_rsa.pub) и закрытый (~/.ssh/id_rsa) ключи
ssh-copy-id хост — добавление открытого ключа в ~/.ssh/authorized_keys на хост-е
Повторим ssh хост
- Надо вводить пассфразу
- Используем агента, который хранит в памяти распароленный закрытый ключ (по умолчанию в прошивке агент уже запущен)
Если агент не запущен, запустим его eval `ssh-agent`
Добавим ключ ssh-add
Снова пробуем ssh хост
- Должно пустить без пассфразы
Д/З
Почитать (и пощёлкать!) руководство по GIT
Проверить работоспособность вашего студенческого аккаунта на Факультетском GitLab (он совпадат с аккаунтом в машзале), а если его нет / не работает / неохота им пользоваться, завести аккаунт на GitHub или GitLab хостинге
в том числе необходимо сгенерировать пару открытый+закрытый ключ (с помощью ssh-keygen или чего-то аналогичного), положить открытую часть на git-хостинг, а закрытую принести на следующее занятие на флешке
- проверить, что репозиторий клонируется (на ваш компьютер) через протокол "git" (не "https")
Зарегистрировать созданный репозиторий в качестве комментария к этому Issue
Формат комментария: Фамилия Имя, группа, URL, где URL — это сслыка для клонирования вашего публичного репозитория