# GIT GUT!
### 1. Проработка и обсуждение задачи
Проработка задач, выяснение и обсуждение деталей ведется как и раньше на форуме. Тут ничего не меняется.
### 2. Начало разработки
Создаем новую ветку в git и начинаем писать код в ней. дать ссылу на репу
### 3. Где можно разрабатывать и тестировать код
Есть несколько вариантов:
- **Sys-dev**. Новый код можно тестировать на sys-dev точно так же как и раньше, залив его через rsync, deploy, шторм etc
- **Три стенда**. Собрать можно джобой https://jenkins-hg.x340.org/job/pipelines/job/k8s-three-stends/
- **JustTry** стенды. Для каждой ветки можно создать свой стенд. Если стенд еще не создавался для ветки то идем `CI/CD -> Pipelines -> Run Pipeline`, выбираем ветку, указываем необходимые параметры и нажимаем `Run pipeline`. При push в ветку стенд обновится автоматически.

### 4. Commit, Push, Merge Request
После того как код написан, проверен и сделан push -- можно делать merge request.
Старайтесь коммитить код осмысленными кусками - это упростить его ревью в дальнейшем.
### 5. Код-ревью, исправление замечаний, общие комментарии к коду
Как и раньше создаем КР в задаче на форуме, указав ссылку на merge request.
Процесс ревью может проходить на форуме или в gitlab, внутри merge request.
### 6. Релиз
После того как ревью пройдено, добавляем кнопку релиз в задаче (через "добавить дифф", указав ссылку на merge request). Перед добавлением ссылки произойдет проверка на возможность сделать merge. Если все ок - кнопка добавится и можно запускать релиз.
Смотрим на кибаны и мониторим ошибки.
### 7. Откат
Если во время релиза **что-то пошло не так**, то есть два варианта:
- Исправить ошибку и выкатить fix (если это быстро и безболезненно)
- Откатить изменения и спокойно найти и починить проблему. Для этого заходим в список merge request, находим свой (во вкладке Merged) и нажимаем кнопку `Revert`. Она создаст новый MR, обратный к исходному и дальше запускаем его как в п.6.

---
# FAQ
### Я не знаю git. Что мне можно почитать?
- Отличная книга https://git-scm.com/book/ru/v2
- Шпаргалка по командам https://training.github.com/downloads/ru/github-git-cheat-sheet/
- Gitflow https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow
### У меня есть куча веток с кодом в trac над которым я еще работаю. Он пропадет?
SVN и trac не выключаются и будут доступны для чтения столько, сколько нужно. Код можно очень просто перенести через unified diff (есть внизу любого диффа из trac). Полученый файл применить как patch в Шторме в новой ветке из git.

### История коммитов и блейм - все потеряется?
Мы перенесли все коммиты в git и все сохранилось - можно будет блеймить так же как и раньше.