Внимание: эта статья вас ничему не научит. Это очень общий взгляд, мои мысли, мои размышления по важному для меня вопросу + небольшое этнографическое исследование графических клиентов Git. Давайте поговорим о распределенных системах контроля версий.
CVS был унылый, медленный, неатомный («ничего не трогай, иду»), но с нормальным клиентом в «обойме».
SVN поначалу был медленным и веселым, но с появлением первой ветки стало еще и грустно («ничего не комми, я умираю»), с двумя разными клиентами в «обойме», баги которых мягко дополняли каждый другой.
Потом я выучил git. Git — это нелогичный набор утилит командной строки, в которых ежедневные операции выполняются последовательностью из двух-четырех команд. Первую неделю я ковырялся в каждом углу, как слепой щенок.
Я нарисовал себе схему четырех репозиториев (рабочая копия, промежуточная область, локальное репо, удаленное репо) и стрелочками подписал, какая команда и с какими опциями передает информацию откуда куда.
К концу этого периода адаптации я нашел заветные комбинации, необходимые мне в повседневной работе, и набрался смелости перетасовывать набор команд с листа бумаги, заставляя их выдавать более-менее то, что мне нужно.
Я еще не освоил возможности интерактивной фиксации из командной строки или, например, какие запросы делать, чтобы понять текущее состояние.
Порадовало то, что репозиторий можно вращать как угодно, связывая что угодно с чем угодно, однако для этого нужна соответствующая магия.
Недавно познакомился с Mercurial — даже не пытался ничего изучать, сразу установил графический клиент и пожалел свой мозг.
Я читал, как они переписывают историю, чтобы внести поправку в коммит - это ритуал с тремя получасовыми заклинаниями и одним "расширением" (установка расширения означает, что ты пишешь его название в конфиге - типа Меркуриал ничего не знал об этом раньше, но теперь знаю).
Изучить оба этих инструмента одновременно — ну не знаю, какой именно:
«К чему я клонюЭ» — спросит нетерпеливый читатель.
Порог входа в DVCS высок.
Многие люди ими не пользуются не потому, что думают, что им это не нужно, а потому, что это на самом деле сложно.
В том числе и программисты, которые по большей части тоже люди.
Сами создатели больше внимания уделяют внутреннему устройству, чем командному интерфейсу — так где же сторонние разработчики, где энтузиасты? Такая сложная вещь, как управление репозиторием, просто требует графического клиента! Их очень много.
Я посмотрел на сектор Mac — казалось бы, они должны это делать для людей.
Первый печальный факт заключается в том, что подавляющее большинство клиентов умеют только показывать дерево и коммитить.
Это уже что-то — можно хотя бы понять состояние репозитория, а иначе это значит, что чуть за пределами прямолинейной истории коммитов вы снова останетесь наедине с командной строкой.
Второй печальный факт — они даже дерево нормально показать не могут, хотя казалось бы, если в вашей программе две функции, ну хоть вылизывайте их хорошенько.
Например, старый гитк приложить немало усилий, чтобы запутать пользователя:
Такой подход оправдан в случае с Windows и Linux (а как еще можно продавать поддержку?), но здесь вызывает вопросы.
На сегодняшний день (1.7.3.5) gitk немного подправлен, но картинка по-прежнему не способствует чтению информации - цвета распределены по непонятному алгоритму и вообще отвлекают, надписи не выровнены, что затрудняет сканирование :
Но! Самое интересное, что на этом они не остановились.
По умолчанию gitk показывает историю в.
барабанной дроби.
перепутанной! Они называют это «слабой историей» или что-то в этом роде.
Наверное, я пожимаю руки.
Это должно облегчить понимание:
И, что характерно, примеру последовали (об этом см.
также третий печальный факт).
Например, претенциозная башня , который дерево вообще не любит рисовать (даже не сразу нашел — обычно там просто список коммитов размером в полэкрана, а-ля github):
Здесь gitx , не столь пафосный и фактически с двумя функциями.
Они, как и авторы gitk, решили сэкономить десяток-другой пикселей на левом краю в ущерб читабельности.
И gitx, и предыдущая Башня вообще отказываются показывать «строгое» дерево истории.
И здесь например , «плагин-клипса, для которого не просто дерево, а для него проблема криво нарисовать надпись.
Я был к этому готов, но он удивил меня своим оригинальным видением:
Неожиданно хорошо выступил Исходное дерево .
Его дерево не лишено самопересечений, но суть происходящего не скрывается за путаницей кругов и линий.
Мне он очень нравится, но опыт показал, что из него невозможно создать, например, мердж.
Поэтому только для глупых задач.
Но умеет и git, и Mercurial, не задаёт лишних вопросов (куда вы установили git-дистрибутив?), а предсказывает нужные (имя и email для коммитов).
Ради любопытства я даже сделал свою версию этого дерева:
Цвета убраны, самопересечений нет, слияния выделены, т.к.
это не полноценные коммиты (фактически не в плане реализации) - это все, что я придумал полезного на данный момент .
Если кто-то может посоветовать что-нибудь еще, буду рад. И, наконец, третий печальный факт. Есть клиенты, которые могут чуть больше — наверное, дошли руки, успели.
Но их «расширенный» функционал — это тот же набор консольных утилит, для которых в интерфейсе есть просто кнопки.
Почему-то никому не пришла в голову простая идея, что на основе того конструктора, того API, которым является git и hg, можно и нужно создать удобный, простой и понятный интерфейс, с новыми метафорами, действиями, возможностями; интерфейс, который устраняет недостатки, а не повторяет их; но все повторяют снова и снова то, что от беспомощности наклепали авторы консольного интерфейса.
Я настаиваю на том, что сегодняшние RSUV – это не готовые продукты, а платформы, которые еще ждут своего продукта.
Теги: #git #Mercurial #дивный новый мир #Системы контроля версий
-
Reddit - Тайный Санта 2014
19 Oct, 24 -
3D-Телевизоры Расширяют Угол Обзора
19 Oct, 24 -
Сглаживание Шрифтов
19 Oct, 24