diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md new file mode 100644 index 000000000..6d84080f6 --- /dev/null +++ b/.github/pull_request_template.md @@ -0,0 +1,16 @@ +## Goal +Выполнение Lab 1 + +## Changes +- submissions/lab1.md +- .github/pull_request_template.md +- SSH signing configured + +## Testing +- go run ./app +- curl http://localhost:8080/health + +## Checklist +- [x] Title is a clear sentence +- [x] Commits are signed +- [x] submissions/lab1.md updated \ No newline at end of file diff --git a/submissions/image-1.png b/submissions/image-1.png new file mode 100644 index 000000000..a5c8393b1 Binary files /dev/null and b/submissions/image-1.png differ diff --git a/submissions/image-10.png b/submissions/image-10.png new file mode 100644 index 000000000..9e8e1e959 Binary files /dev/null and b/submissions/image-10.png differ diff --git a/submissions/image-11.png b/submissions/image-11.png new file mode 100644 index 000000000..4b8787863 Binary files /dev/null and b/submissions/image-11.png differ diff --git a/submissions/image-12.png b/submissions/image-12.png new file mode 100644 index 000000000..fd265b6cf Binary files /dev/null and b/submissions/image-12.png differ diff --git a/submissions/image-13.png b/submissions/image-13.png new file mode 100644 index 000000000..91e98a925 Binary files /dev/null and b/submissions/image-13.png differ diff --git a/submissions/image-14.png b/submissions/image-14.png new file mode 100644 index 000000000..eb0169e8b Binary files /dev/null and b/submissions/image-14.png differ diff --git a/submissions/image-15.png b/submissions/image-15.png new file mode 100644 index 000000000..ded783ce6 Binary files /dev/null and b/submissions/image-15.png differ diff --git a/submissions/image-16.png b/submissions/image-16.png new file mode 100644 index 000000000..a9264f42c Binary files /dev/null and b/submissions/image-16.png differ diff --git a/submissions/image-17.png b/submissions/image-17.png new file mode 100644 index 000000000..8c41057fe Binary files /dev/null and b/submissions/image-17.png differ diff --git a/submissions/image-18.png b/submissions/image-18.png new file mode 100644 index 000000000..022496e38 Binary files /dev/null and b/submissions/image-18.png differ diff --git a/submissions/image-19.png b/submissions/image-19.png new file mode 100644 index 000000000..bdb651044 Binary files /dev/null and b/submissions/image-19.png differ diff --git a/submissions/image-2.png b/submissions/image-2.png new file mode 100644 index 000000000..67da7ee84 Binary files /dev/null and b/submissions/image-2.png differ diff --git a/submissions/image-20.png b/submissions/image-20.png new file mode 100644 index 000000000..755b1db13 Binary files /dev/null and b/submissions/image-20.png differ diff --git a/submissions/image-21.png b/submissions/image-21.png new file mode 100644 index 000000000..844c04a92 Binary files /dev/null and b/submissions/image-21.png differ diff --git a/submissions/image-22.png b/submissions/image-22.png new file mode 100644 index 000000000..07a25930a Binary files /dev/null and b/submissions/image-22.png differ diff --git a/submissions/image-23.png b/submissions/image-23.png new file mode 100644 index 000000000..79d31e337 Binary files /dev/null and b/submissions/image-23.png differ diff --git a/submissions/image-24.png b/submissions/image-24.png new file mode 100644 index 000000000..941180afc Binary files /dev/null and b/submissions/image-24.png differ diff --git a/submissions/image-25.png b/submissions/image-25.png new file mode 100644 index 000000000..7d6532d6b Binary files /dev/null and b/submissions/image-25.png differ diff --git a/submissions/image-26.png b/submissions/image-26.png new file mode 100644 index 000000000..4cdaa561b Binary files /dev/null and b/submissions/image-26.png differ diff --git a/submissions/image-3.png b/submissions/image-3.png new file mode 100644 index 000000000..e413ad30a Binary files /dev/null and b/submissions/image-3.png differ diff --git a/submissions/image-4.png b/submissions/image-4.png new file mode 100644 index 000000000..19b555b1d Binary files /dev/null and b/submissions/image-4.png differ diff --git a/submissions/image-5.png b/submissions/image-5.png new file mode 100644 index 000000000..319f7cbbb Binary files /dev/null and b/submissions/image-5.png differ diff --git a/submissions/image-6.png b/submissions/image-6.png new file mode 100644 index 000000000..a30815cef Binary files /dev/null and b/submissions/image-6.png differ diff --git a/submissions/image-7.png b/submissions/image-7.png new file mode 100644 index 000000000..89a16dc57 Binary files /dev/null and b/submissions/image-7.png differ diff --git a/submissions/image-8.png b/submissions/image-8.png new file mode 100644 index 000000000..24be0d7e4 Binary files /dev/null and b/submissions/image-8.png differ diff --git a/submissions/image-9.png b/submissions/image-9.png new file mode 100644 index 000000000..dd9d0bf54 Binary files /dev/null and b/submissions/image-9.png differ diff --git a/submissions/image.png b/submissions/image.png new file mode 100644 index 000000000..778661448 Binary files /dev/null and b/submissions/image.png differ diff --git a/submissions/lab2.md b/submissions/lab2.md new file mode 100644 index 000000000..c428e55c7 --- /dev/null +++ b/submissions/lab2.md @@ -0,0 +1,131 @@ +# Lab2 +Фролова Анастасия Ивановна, M25-RO-01 +a.frolova@innopolis.university + +## 1.1 + +Ниже представлены скриншоты запускаемых команд. + +![alt text](image.png) + +![alt text](image-1.png) + +## 1.2 + +![alt text](image-4.png) + +В папке `.git/` хранится вся история репозитория. Здесь видим +- HEAD (указатель на текущую ветку); +- config (настройки); +- objects/ (все объекты Git); +- refs/ (ссылки на ветки и теги); +- index (стейджинг-область); +- hooks/ (скрипты-обработчики событий). + +![alt text](image-5.png) + +HEAD указывает на ветку `main` — это значит, чт мы сейчас на ветке main. + +В папке `refs/heads/` лежат файлы всех локальных веток. Каждый файл содержит SHA последнего коммита в этой ветке. Здесь видим ветку `main` и папку `feature/`. + +![alt text](image-6.png) + +В `objects/` объекты Git хранятся в подпапках по первым двум символам SHA-хеша. Это сделано для оптимизации — файловая система быстрее работает, когда в одной папке не слишком много файлов. Каждый объект — это blob (содержимое файла), tree (директория) или commit. + +![alt text](image-7.png) + +В репозитории 67 loose-объектов (несжатых). + +## 1.3 Моделирование чрезвычайной ситуации + восстановление + +![alt text](image-8.png) + +![alt text](image-9.png) + +История коммитов до сброса: + +![alt text](image-10.png) + +Коммиты после сброса: + +![alt text](image-11.png) + +`git reflog` + +![alt text](image-12.png) + +Восстанавливаем коммит: +![alt text](image-13.png) + +Проверяем, что коммит восстановился: + +![alt text](image-14.png) + +> Вопрос: что произойдет, если git gc выполнится между неудачным сбросом и восстановлением? + +> Ответ: Если выполится git gc (сборщик мусора), потерянные коммиты будут безвозвратно удалены. Git gc удаляет недостижимые объекты, которые недостижимы (на них нет ссылок из веток или тегов). Поэтому случайно удаленные коммиты необходимо восстанавливать как можно быстрее. + +--- + +## Task2. Отметьте релиз и перебазируйте фичу + +### 2.1 Аннотированный релиз с подписью + +![alt text](image-15.png) + +Проверяем, что тег аннотирован и подписан + +![alt text](image-16.png) +![alt text](image-17.png) + +### 2.2: Rebase + force-with-lease + +Моделирование "движения вверх по течению" (не знаю корректный перевод или нет) + +![alt text](image-18.png) + +Сделала коммит в main, затем создала временную ветку от main. В ней сделала коммит. Затем сравниваю логи до и после rebase. + +Логи до и после: + +![alt text](image-22.png) + +### 2.3 + +> Вопрос: когда выбирать merge, а когда rebase. + +> Ответ: Merge используется, когда важно сохранить историю ветвления и не переписывать коммиты. Rebase - для локальных веток перед PR, переписывает коммиты, и получается линейная история. Поэтому нельзя использовать rebase для веток, на которые уже кто-то ссылается. + +## 3. Бонусное задание + +### 3.1 Bisect вручную + +Вручную выполняю bisect + +![alt text](image-19.png) + +Тест провалился: + +![alt text](image-20.png) + +Поправляем: + +![alt text](image-21.png) +![alt text](image-23.png) + +Логи: + +![alt text](image-24.png) +### 3.2 Автоматизация процесса + +`git bisect run sh -c 'cd app && go test ./... && go build ./...'` + +![alt text](image-25.png) + +> Вопрос: как bisect нашел его за log₂(N) шагов? + +> Ответ: bisect использует бинарный поиск, между хорошим и плохим выбирет коммит в середине, и проверяет его, следовательно, за log₂(N) шагов найдется первый плохой коммит. + +Еще раз полный лог: + +![alt text](image-26.png)