Про откаты
May 20, 2016 · Commentsкрик души
Я вот заметил интересную особенность поведения людей. Прямо психологические уши торчат. Сложно заставить человека откатить коммит с ошибкой. Он правдами и неправдами будет держаться, но код свой в обиду не даст. Ну и что, что там ошибка? Ну и что, что теперь билд не собирается, тесты все в красном и десятки человек матеряться вполголоса. “Я вот сейчас бысто поправлю”. “I don’t want to do negative work”. “Сейчас тесты прогоню и закоммичу”.
Причем ладно бы если только далекие от разработки люди - они, конечно, SVN пользуются, но смысл системы контроля версий для них все равно не очень понятен. От них частенько можно услышать “Как же я откачу? Я же целый день работы потеряю”. Тут можно только только мысленно перекреститься, посчитать до десяти и махнуть рукой.
Так нет же, матерые разработчики вооруженные Git, а все туда же - “I’m gonna fix it in a minute”. Чуваки, но откатить же закомиченное проще! А потом откатить откат и заполировать баг фиксом. И ведь даже код заново на ревью посылать не нужно, достаточно только дельту посмотреть…
В Chrome процесс был построен так. Все коммитят в trunk, но любой коммит ломающий тесты или билд откатывается по первому подозрению. При этом коммитеры обязаны быть в IRC, чтобы откатить коммит при необходимости. Шериф (он же деружный) следит за состоянием дерева и при необходимости откатывает коммиты сам.
Такая система работает на удивление хорошо, особенно если учесть сколько кода коммитится каждый день. Я не раз наблюдал, когда код откатывался по довольно хлипкому подозрению, по принципу - лучше откатить больше чем меньше. И ничего, люди спокойно откатывали код и коммитили его снова, когда находился реальный виновник.