🔥

Тред (Полина Гуртовая)


Сегодня поговорим про коммуникацию между людьми и сервисами. Начнем с того что посложнее – общения с людьми и code review в частности. Мне кажется, участвуя в code review, очень-очень важно быть вежливым. Давайте посмотрим как это лучше делать.
notion image

Каждый раз когда я делаю git commit, я предполагаю что его будут ревьюить и поэтому стараюсь упростить жизнь людям, которые будут этим заниматься. Например, я не в состоянии качественно отревьюить PR больше чем на 500 строк. Поэтому стараюсь таких не создавать.

При ревью я первым делом смотрю на историю коммитов, поэтому, отдавая свой код на ревью я стараюсь чтобы это действительно была история, а не 'temp, fix, add component'

Хорошо бы сделать так, чтобы переключившись на любой коммит из вашего PR ничего не ломалось и было явно видно какой атомарный кусочек новой фичи или фикса в нем пилился

В процессе разработки (особенно если пилится что-то большое или мы делаем какой-то сложный рефакторинг) история и содержимое коммитов могут получаться немного хаотичными. Хаос ревьюить очень сложно

Я считаю хорошей практикой готовить свой код для ревью. И для этого нужна всего одна простая команда - git rebase

Я часто слышу что rebase и последующий forcepush это опасно и ужасно. На самом деле все ровно наоборот. Ребейзить и форспушить очень полезно. Просто нужно понимать как это работает.

Я почти всегда делаю rebase c флагом --onto. Просто потому что не помню как работают другие варианты синтаксиса :)

Перед тем как сделать PR я делаю интерактивный rebase. При этом я переименовываю часть коммитов, разбиваю на части слишком большие, меняю их порядок. После этого можно форспушнуть все что получилось. Форспушить в свою ветку всегда безопасно.

Форспушить в общую с коллегой ветку тоже можно, но тут нужно быть аккуратнее и использовать флаг --force-with-lease (У нас в блоге есть об этом статья, которую я здесь не привожу ибо она портит нам статистику своей популярностью :)

Есть удобный трюк с флагом --fixup. Вы делаете коммит (когда угодно в вашей ветке) примерно так: git commit --fixup [ссылка на коммит к которому относятся ваши правки] Дальше при rebase используете флаг --autosquash и вуаля. Ваши правки помержились в нужный вам коммит.