Fog Creek – компания созданная Джоелом Спольски и, возможно, известная вам по продукту Trello, на прошлой неделе представила свой новый проект державшийся долгое время в тайне: Kiln Harmony. Это
А магии там на самом деле много.
Для начала, при работе через web вы заметите переключатель «Показывать как в Git» или «Показывать как в Mercurial». В большинстве интерфейсов, таких как просмотр самих файлов или диффов, отличий нет. Нюансы появляются при просмотре subrepositories и submodules.
Ветвление – особый вопрос, так как именно в подходе к веткам у Mercurial и git больше всего различий. Однако, команда Fog Creek поставила своей целью не менять привычки пользователей. Работаете вы с Mercurial или с git – вы не должны помнить о каких-то особенностях другой системы и перестраивать свой привычный рабочий процесс.
Если ваш репозиторий достаточно прост и имеет только одну ветку — в этом случае всё прозрачно: git master синхронизируется с Mercurial tip.
Если в git репозитории несколько branches, то в Mercurial они превращаются в bookmarks – это решение также очевидно и в большинстве холиваров (в т.ч. на хабре) не раз обсуждалась, что git branch = hg bookmark.
Магия начинается при попытке транслировать ветки в обратную сторону из Мercurial в git. Во-первых, в Mercurial есть анонимные ветки без уникального имени бранча или букмарка, что в git выглядит не очень хорошо. Во-вторых, в Mercurial есть так называемые “named branches”, которые совсем не похожи на git branch и аналога в git нет. Статья для саморазвития: Mercurial: руководство по созданию веток. Для решения этой проблемы ребята из Fog Creek поступили хитро — всем анонимным веткам автоматически присваиваются bookmarks и соответсвенно начинает работать схема git branch = hg bookmark. А Mercurial «named branches» транслируются в git refs (знающий читатель сразу заметит, что при таком подходе в лоб возникнет потеря информации, но более подробное описание тонкостей алгоритма выходит за рамки этой обзорной статьи).
Итак, значит ли это, что если я всю жизнь работал с Mercurial и не использовал bookmarks, то теперь я должен буду их изучить, т.к. они автоматически начнут появляться на всех анонимных ветках? Ответ – нет! Магия происходит автоматически где-то на сервере. Причём вы можете пользоваться старой версией Mercurial, которая даже не поддерживает bookmarks.
Более подробно о других нюансах и их технической реализации можно прочитать в отдельной статье в блоге разработчиков: Detailed articles on exactly how Kiln Harmony works. Кроме того, все желающие приглашаются на сессию вопросов и ответов 19 марта: Kiln Harmony Live Q & A.
Личный взгляд.
Я активный пользователь Mercurial и пассивный пользователь git (git повсюду, иначе никак!). Когда-то в начале своего пути я мечтал о таком сервисе, пробовал hg-git и прочие извращения. На мой взгляд обе системы имеют свои плюсы и минусы. Конечный выбор в наше время больше зависит от конкретной команды разработчиков и от рабочего окружения, а не от тех или иных уникальных функций, которых не так уж и много. Если вы владеете git и попали в команду где вынуждены использовать Mercurial – проще выучить Mercurial, и наоборот. Это под силу любому техническому специалисту и займёт не очень много времени, а в будущем сэкономит гораздо больше сил и средств при общении с коллегами. Так что сервис вряд ли полетит, к тому же за 25$ в месяц на пользователя.
Автор: PQR