Текущее Состояние Инструментов. Взгляд Пользователя

Внимание: эта статья вас ничему не научит. Это очень общий взгляд, мои мысли, мои размышления по важному для меня вопросу + небольшое этнографическое исследование графических клиентов Git. Давайте поговорим о распределенных системах контроля версий.

CVS был унылый, медленный, неатомный («ничего не трогай, иду»), но с нормальным клиентом в «обойме».

SVN поначалу был медленным и веселым, но с появлением первой ветки стало еще и грустно («ничего не комми, я умираю»), с двумя разными клиентами в «обойме», баги которых мягко дополняли каждый другой.

Потом я выучил git. Git — это нелогичный набор утилит командной строки, в которых ежедневные операции выполняются последовательностью из двух-четырех команд. Первую неделю я ковырялся в каждом углу, как слепой щенок.

Я нарисовал себе схему четырех репозиториев (рабочая копия, промежуточная область, локальное репо, удаленное репо) и стрелочками подписал, какая команда и с какими опциями передает информацию откуда куда.

К концу этого периода адаптации я нашел заветные комбинации, необходимые мне в повседневной работе, и набрался смелости перетасовывать набор команд с листа бумаги, заставляя их выдавать более-менее то, что мне нужно.

Я еще не освоил возможности интерактивной фиксации из командной строки или, например, какие запросы делать, чтобы понять текущее состояние.

Порадовало то, что репозиторий можно вращать как угодно, связывая что угодно с чем угодно, однако для этого нужна соответствующая магия.

Недавно познакомился с Mercurial — даже не пытался ничего изучать, сразу установил графический клиент и пожалел свой мозг.

Я читал, как они переписывают историю, чтобы внести поправку в коммит - это ритуал с тремя получасовыми заклинаниями и одним "расширением" (установка расширения означает, что ты пишешь его название в конфиге - типа Меркуриал ничего не знал об этом раньше, но теперь знаю).

Изучить оба этих инструмента одновременно — ну не знаю, какой именно:

Текущее состояние инструментов.
</p><p>
 Взгляд пользователя

«К чему я клонюЭ» — спросит нетерпеливый читатель.

Порог входа в DVCS высок.

Многие люди ими не пользуются не потому, что думают, что им это не нужно, а потому, что это на самом деле сложно.

В том числе и программисты, которые по большей части тоже люди.

Сами создатели больше внимания уделяют внутреннему устройству, чем командному интерфейсу — так где же сторонние разработчики, где энтузиасты? Такая сложная вещь, как управление репозиторием, просто требует графического клиента! Их очень много.

Я посмотрел на сектор Mac — казалось бы, они должны это делать для людей.

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

Это уже что-то — можно хотя бы понять состояние репозитория, а иначе это значит, что чуть за пределами прямолинейной истории коммитов вы снова останетесь наедине с командной строкой.

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

Например, старый гитк приложить немало усилий, чтобы запутать пользователя:

Текущее состояние инструментов.
</p><p>
 Взгляд пользователя

Такой подход оправдан в случае с Windows и Linux (а как еще можно продавать поддержку?), но здесь вызывает вопросы.

На сегодняшний день (1.7.3.5) gitk немного подправлен, но картинка по-прежнему не способствует чтению информации - цвета распределены по непонятному алгоритму и вообще отвлекают, надписи не выровнены, что затрудняет сканирование :

Текущее состояние инструментов.
</p><p>
 Взгляд пользователя

Но! Самое интересное, что на этом они не остановились.

По умолчанию gitk показывает историю в.

барабанной дроби.

перепутанной! Они называют это «слабой историей» или что-то в этом роде.

Наверное, я пожимаю руки.

Это должно облегчить понимание:

Текущее состояние инструментов.
</p><p>
 Взгляд пользователя

И, что характерно, примеру последовали (об этом см.

также третий печальный факт).

Например, претенциозная башня , который дерево вообще не любит рисовать (даже не сразу нашел — обычно там просто список коммитов размером в полэкрана, а-ля github):

Текущее состояние инструментов.
</p><p>
 Взгляд пользователя

Здесь gitx , не столь пафосный и фактически с двумя функциями.

Они, как и авторы gitk, решили сэкономить десяток-другой пикселей на левом краю в ущерб читабельности.

И gitx, и предыдущая Башня вообще отказываются показывать «строгое» дерево истории.



Текущее состояние инструментов.
</p><p>
 Взгляд пользователя

И здесь например , «плагин-клипса, для которого не просто дерево, а для него проблема криво нарисовать надпись.

Я был к этому готов, но он удивил меня своим оригинальным видением:

Текущее состояние инструментов.
</p><p>
 Взгляд пользователя

Неожиданно хорошо выступил Исходное дерево .

Его дерево не лишено самопересечений, но суть происходящего не скрывается за путаницей кругов и линий.



Текущее состояние инструментов.
</p><p>
 Взгляд пользователя

Мне он очень нравится, но опыт показал, что из него невозможно создать, например, мердж.

Поэтому только для глупых задач.

Но умеет и git, и Mercurial, не задаёт лишних вопросов (куда вы установили git-дистрибутив?), а предсказывает нужные (имя и email для коммитов).

Ради любопытства я даже сделал свою версию этого дерева:

Текущее состояние инструментов.
</p><p>
 Взгляд пользователя

Цвета убраны, самопересечений нет, слияния выделены, т.к.

это не полноценные коммиты (фактически не в плане реализации) - это все, что я придумал полезного на данный момент .

Если кто-то может посоветовать что-нибудь еще, буду рад. И, наконец, третий печальный факт. Есть клиенты, которые могут чуть больше — наверное, дошли руки, успели.

Но их «расширенный» функционал — это тот же набор консольных утилит, для которых в интерфейсе есть просто кнопки.



Текущее состояние инструментов.
</p><p>
 Взгляд пользователя

Почему-то никому не пришла в голову простая идея, что на основе того конструктора, того API, которым является git и hg, можно и нужно создать удобный, простой и понятный интерфейс, с новыми метафорами, действиями, возможностями; интерфейс, который устраняет недостатки, а не повторяет их; но все повторяют снова и снова то, что от беспомощности наклепали авторы консольного интерфейса.

Я настаиваю на том, что сегодняшние RSUV – это не готовые продукты, а платформы, которые еще ждут своего продукта.



Текущее состояние инструментов.
</p><p>
 Взгляд пользователя

Теги: #git #Mercurial #дивный новый мир #Системы контроля версий

Вместе с данным постом часто просматривают: