2012-02-18

The hardest piece of code I ever wrote

Наконец то можно рассказать кулстори, как я патчил mercurial.
Предыстория
В октябре у нас устаканилась работа с репозиторием и родилась идея как-то выделить на графе дефолтовую ветвь. Пару часов после работы повспоминал питон, погрепал сорцы и нашел место, которое отрисовывало линию и задал ему отрисовку более толстой линией.

Попытка 1
Идея показалась удачной и я приперся в рассылку меркуриала и скинул им идею. http://www.selenic.com/pipermail/mercurial-devel/2011-October/034880.html На что получил закономерный ответ: идея хорошая, но хочется конфигурируемости - не у всех главная ветка является default, в частности у них главная - stable. Fail

Попытка 2
Я забил, да и ковырять было лень, пока на новогодних выходных наконец не разобрался как доступаться к конфигам. После чего сделал патч, залил на pastebin и снова запостил в рассылку. http://www.selenic.com/pipermail/mercurial-devel/2012-January/036799.html Оказалось, они там все ленивые и всё автоматизировали, поэтому патчи принимаются только через patchbomb. Fail

Попытка 3
Разобрался с патчбомбой и снова отправил. После чего Мэтт сделал пару замечаний и отправил меня курить регламенты. Еще он сказал, что толщина, конечно, хорошо, но народ захочет задавать и цвет, после чего начал требовать от меня дискуссии. http://www.selenic.com/pipermail/mercurial-devel/2012-January/036828.html Короче мы друг друга не поняли, и я ушел исправлять кодестайл и впиливать цвет. Fail

Попытка 4
Следующая перестрелка письмами растянулася на неделю. Мэтт многозначительно вздыхал http://www.selenic.com/pipermail/mercurial-devel/2012-January/036857.html а я всё еще не понимал чего от меня хотят, но пошел фиксить. Fail

Попытка 5
Учел все исправления, запустил часовое тестирование, коллапсировал изменения в один патч и снова отправил. На что Мэтт ответил, что коллапсировать не надо и коммиты должны быть атомарными http://www.selenic.com/pipermail/mercurial-devel/2012-January/037263.html Fail

Попытка 6
Руками разбиваю коммит на две части: для цвета и толщины. http://www.selenic.com/pipermail/mercurial-devel/2012-January/037574.html Но, окно уже закрылось, и патчи принимают только с февраля. Fail

Попытка 7
Жду 2 февраля, переотправляю патч. Мэтт не отвечает, зато приходит Мартин и фигачит еще одну порцию замечаний. http://www.selenic.com/pipermail/mercurial-devel/2012-February/037874.html Fail

Попытка 8
Исправляю руками diff файл, отправляю, проверяю почту и замечаю ошибку http://www.selenic.com/pipermail/mercurial-devel/2012-February/037933.html Fail

Попытка 9
Быстро исправляю и отправляю снова. http://www.selenic.com/pipermail/mercurial-devel/2012-February/038098.html Проходит неделя, отправляю письма Мартину, на что он еще через неделю посылает меня в их IRC канал. Прихожу и спрашиваю, есть ли тут коммитеры. На канале меня узнают: "а та самая фигня с графом". Находится Патрик, который читает всю переписку, и переколбашивает к херам оба моих патча http://mezard.eu/hg/hg-does-it-look-good-for-you/rev/41a5282461cf Ну и спрашивает устраивают ли меня его изменения, и если всё ок, он запушит измнения в дефолт. Пока мы общались на тему "что за гребаная Спарта у них в разработке", внезапно пришел Мэтт и запушил мою версию изменений http://www.selenic.com/hg/graph/41fc1e078d68, а Патрик пообещал отправить свои правки отдельными патчами. Double win.