📖 Повторение: Summary Session 11

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

⚡ Главное из занятий 27 и 28

  • Урок 27: 5 bash-скриптов — создание файлов/архивов, ping с awk, MD5, генерация скриптов, смена расширений. Ключевые команды: tar -czvf, md5sum, read -p, mv.
  • Урок 28: Merge-конфликты возникают при несовместимых изменениях одного файла в разных ветках. Решение: вручную (удалить маркеры <<<<<<<, =======, >>>>>>>) или через git mergetool. Monorepo — один репозиторий для нескольких проектов.

Lecture 17 — Практическая работа со скриптами

Ссылка: Занятие 27 — Завершение работы со скриптами

Что изучали: 5 практических задач

1. testscript.sh — создание файлов, архив, распаковка

Скрипт создаёт 5 директорий (Dir1..Dir5), в каждой по 5 файлов с временем в имени. Формирует архив с датой в имени файла, список архива пишет в ArhList.txt через >> (добавление), распаковывает в /opt/newfolder/.

  • Ключевые переменные: EXTPATH=/opt/newfolder/, ARCHIVE=/tmp/Arh/Arh-$(date '+%d-%m-%y').tar.gz
  • Оператор >> в tar: результат команды дописывается в файл, а не перезаписывает его
  • tar -czvf: создать (-c), gzip (-z), verbose (-v), указать файл (-f)
  • Архивируются: файлы из директорий Dir1..Dir5 в /tmp/Arh/

2. pinger.sh — пинг с измерением времени

Принимает адрес через read -p, выполняет ping -c 1, извлекает время RTT через awk -F'/' '/^rtt/ {print $5}'. На macOS строка начинается с round-trip, а не rtt.

3. MD5-хэши файлов

Скрипт запрашивает путь, проходит по файлам в директории, вычисляет хэш через md5sum и записывает в файл $pathcheck-md5sum.txt. Используется для проверки целостности файлов.

4. Скрипт, создающий скрипты

Принимает путь/имя через read -p, проверяет существование файла (ls $SCRIPTPATH/$NAME 2>/dev/null), создаёт скрипт с шебангом через echo -e "#!/bin/bash\n#\n...", делает исполняемым через chmod +x.

5. Смена расширений файлов

Запрашивает директорию, текущее и новое расширение. Перебирает файлы for file in *.$current_extension, переименовывает через mv "$file" "$filename.$new_extension". Проверки: [ -z "$directory" ], [ ! -d "$directory" ].

Lecture 18 — Merge конфликты и Monorepo

Ссылка: Занятие 28 — Merge конфликты и monorepo

Merge конфликты

Merge conflict возникает, когда две ветки содержат несовместимые изменения одного участка файла. Git не может автоматически решить, какую версию сохранить.

Виды merge conflict

  • Конфликты файлов — несовместимые изменения одного файла в разных ветках
  • Конфликты слияния директорий — изменения в структуре директорий

Как разрешить merge conflict

  1. Посмотреть конфликтующие файлы: git status
  2. Просмотреть журнал конфликтующих коммитов: git log --merge
  3. Увидеть разницу: git diff
  4. Открыть конфликтующий файл и вручную удалить маркеры <<<<<<<, =======, >>>>>>>
  5. Или использовать: git mergetool — запускает графический инструмент
  6. После разрешения: git add <файл>git merge --continue

Как избежать merge conflict в команде

  • Чаще делать git pull, чтобы работать на актуальной версии
  • Делать небольшие коммиты и часто интегрировать изменения
  • Разделять зоны ответственности (разные файлы/директории)
  • Обсуждать изменения в затрагиваемых общих файлах

Monorepo (монорепозиторий)

Monorepo — подход, при котором несколько проектов или компонентов хранятся в одном репозитории. Например, вместо 10 отдельных репозиториев Lesson1..Lesson10 — один репозиторий с директориями по темам.

Преимущества monorepo

  • Упрощённая коллаборация — все изменения видны в одном месте
  • Единый поиск по всему коду
  • Логическая группировка связанных проектов

Недостатки monorepo

  • Большой размер репозитория
  • Длительное время клонирования
  • Выше вероятность merge-конфликтов при работе большой команды