📖 Повторение: 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
- Посмотреть конфликтующие файлы:
git status - Просмотреть журнал конфликтующих коммитов:
git log --merge - Увидеть разницу:
git diff - Открыть конфликтующий файл и вручную удалить маркеры
<<<<<<<,=======,>>>>>>> - Или использовать:
git mergetool— запускает графический инструмент - После разрешения:
git add <файл>→git merge --continue
Как избежать merge conflict в команде
- Чаще делать
git pull, чтобы работать на актуальной версии - Делать небольшие коммиты и часто интегрировать изменения
- Разделять зоны ответственности (разные файлы/директории)
- Обсуждать изменения в затрагиваемых общих файлах
Monorepo (монорепозиторий)
Monorepo — подход, при котором несколько проектов или компонентов хранятся в одном репозитории. Например, вместо 10 отдельных репозиториев Lesson1..Lesson10 — один репозиторий с директориями по темам.
Преимущества monorepo
- Упрощённая коллаборация — все изменения видны в одном месте
- Единый поиск по всему коду
- Логическая группировка связанных проектов
Недостатки monorepo
- Большой размер репозитория
- Длительное время клонирования
- Выше вероятность merge-конфликтов при работе большой команды