🏠 Домашнее задание — Занятие 28

К оглавлению урока

⚡ ДЗ кратко

Укрупнение репозиториев: вместо Lesson1..Lesson10 создать репозитории по темам или один для всего обучения. Прислать ссылку на новый репозиторий.

Задание (дословно из LMS)

Linux: Домашнее задание 18

Проведите "укрупнение" своих репозиториев или репозитория. Миграция от множества разрозненных репозиториев к более крупному. Например, вместо дюжины Lesson1–Lesson10 создайте репозитории по темам курса или вовсе один репозиторий для всего обучения. В нем по отдельным директориям должны лежать занятия или домашние работы.

Пришлите ссылку на ваш новый репозиторий.

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

Шаг 1: Выбрать структуру monorepo

Варианты структуры (на ваш выбор):

# Вариант А: один репозиторий для всего обучения
linux-git-course/
  ├── bash-lessons/       # уроки по bash
  ├── git-lessons/        # уроки по git
  ├── homework/           # домашние задания
  └── README.md

# Вариант Б: по темам
bash-scripting/           # всё по bash
git-workflow/             # всё по git
linux-admin/              # администрирование Linux

Шаг 2: Создать новый репозиторий на GitHub

# На GitHub.com: New repository → название → Create
# Например: linux-git-monorepo

Шаг 3: Подготовить локальную структуру

mkdir ~/linux-git-monorepo
cd ~/linux-git-monorepo
git init

# Создать структуру директорий
mkdir -p bash-lessons git-lessons homework

# Скопировать файлы из каждого существующего репозитория
cp -r ~/Lesson1/* bash-lessons/lesson01/
cp -r ~/Lesson2/* bash-lessons/lesson02/
# ... и т.д. для каждого урока

Шаг 4: Удалить вложенные .git директории

⚠️ ОПАСНО: find . -type d -name ".git" -exec rm -rf {} +

Эта команда безвозвратно удалит историю коммитов всех вложенных репозиториев. Мы потеряем коммиты в индивидуальных репозиториях.

Сначала обязательно:
1. Проверить что будет удалено (без -exec):
find . -type d -name ".git" -not -path "./.git"

2. Убедиться в правильности расположения (pwd)

Только после проверки — выполнять удаление.
# Проверить что будет удалено
find . -type d -name ".git" -not -path "./.git"

# Если список верный — удалить
find . -type d -name ".git" -exec rm -rf {} +

Шаг 5: Инициализировать новый репозиторий и запушить

# Добавить все файлы
git add .
git commit -m "Initial monorepo: migrate all lesson repositories"

# Подключить удалённый репозиторий
git remote add origin https://github.com/YOUR_USERNAME/linux-git-monorepo.git
git push -u origin main

Шаг 6: Проверить что репозиторий работает

# Клонировать в тестовую директорию и проверить
git clone https://github.com/YOUR_USERNAME/linux-git-monorepo.git test-clone
ls test-clone/

# Добавить новую директорию (Задание 3 из урока)
cd linux-git-monorepo
mkdir -p bash-lessons/new-homework
echo "# New homework" > bash-lessons/new-homework/README.md
git add bash-lessons/new-homework/
git commit -m "Add new homework directory"
git push

Что прислать

Прислать ссылку на новый репозиторий в форме: https://github.com/YOUR_USERNAME/REPO_NAME

Связь с теорией урока