🏠 Домашнее задание

⚡ Кратко: что сдать

  • Установить и инициализировать gt в учебном репозитории
  • Собрать стек из 3 веток, отправить стек PR на GitHub
  • Сдать: вывод gt log short и ссылки на 3 PR
⚠️ Дополнение вне лекций. Это задание по внешнему инструменту. Если установить gt в вашем окружении нельзя — выполните «бумажную» версию: распишите все команды по шагам (этого достаточно для зачёта понимания).

Подготовка окружения

1. Установить Node.js (если нет) и Graphite CLI

# проверить наличие Node.js (нужен для npm)
node --version
npm --version

# установить Graphite CLI глобально
npm install -g @withgraphite/graphite-cli

# проверить
gt --version
Альтернатива (macOS/Linux): brew install withgraphite/tap/graphite.

2. Подготовить учебный репозиторий

# можно взять репозиторий из занятия 31 или создать новый на GitHub,
# затем клонировать и зайти в него
git clone https://github.com/<ваш-логин>/learning_git.git
cd learning_git

# включить Graphite
gt init            # выбрать trunk: main

# авторизоваться (токен из GitHub → Settings → Developer settings → Tokens)
gt auth -t <ВАШ_ТОКЕН>

Задание

Смоделируйте разработку небольшой фичи «карточка профиля» в виде стека из трёх веток, где каждая ветка добавляет один файл:

  1. feat/profile-html — добавляет profile.html
  2. feat/profile-css — добавляет profile.css (поверх предыдущей)
  3. feat/profile-js — добавляет profile.js (поверх предыдущей)

Пошаговое решение

# --- ветка 1 ---
echo "<div class='profile'>...</div>" > profile.html
gt create feat/profile-html -a -m "feat: profile markup"

# --- ветка 2 (стекается на первую) ---
echo ".profile { padding: 1rem; }" > profile.css
gt create feat/profile-css -a -m "feat: profile styles"

# --- ветка 3 (стекается на вторую) ---
echo "console.log('profile');" > profile.js
gt create feat/profile-js -a -m "feat: profile script"

# посмотреть стек
gt log short

# отправить весь стек: 3 PR с правильными базами
gt submit --stack

Проверка: правка нижней ветки

Сымитируйте замечание ревьюера к разметке и убедитесь, что весь стек обновился автоматически:

gt bottom                          # на feat/profile-html
echo "<div class='profile card'>...</div>" > profile.html
gt modify -a                       # amend + авто-restack css и js
gt submit --stack                  # обновить PR'ы
Проверьте перед сдачей: в gt log short ровно 3 ветки над main в правильном порядке, и на GitHub созданы 3 PR, где PR второй ветки нацелен на первую, а не на main.

Что сдать

  • Скриншот или текст вывода gt log short
  • Ссылки на 3 созданных pull request
  • Одно-два предложения: чем стек оказался удобнее одной большой ветки

Связь с разделами урока