Как стать автором
Обновить
6.2

Mercurial *

Распределённая система управления версиями

Сначала показывать
Порог рейтинга
Уровень сложности

Почему Facebook* не использует Git

Время на прочтение 8 мин
Количество просмотров 38K

Я работаю над созданием Graphite, источником вдохновения для которого стал внутренний инструментарий Facebook. Когда я решил создать стартап с друзьями, то никогда раньше не слышал о Mercurial, хотя всегда страстно любил инструменты разработчика. Мой предыдущий опыт разработки включал в себя личные проекты, домашнюю работу в колледже, разработку для iOS в Google и развитие инфраструктуры в Airbnb. На протяжении всей моей карьеры использование git было таким же естественным, как воздух. Он настолько популярен, что лично я считал его единственным подходящим инструментом для создания изменений в коде и управления ими.

Забавно, что специалист по Mercurial Грегори Gregory Szorc работал рядом со мной в Airbnb, хотя я знал его только как приятного коллегу, но не представлял, что он контрибьютор.

В 2021 году мои коллеги по команде Томас и Ник раскрыли мне глаза. Они пришли из Facebook и, к моему удивлению, едва знали Git. Зато они имели глубокое понимание паттернов Mercurial и рабочего процесса Facebook на основе «многослойных diff» (stacked diff). Со временем они убедили меня в полезности этого паттерна и мы развернули направление развития компании, чтобы реализовать многослойные diff для разработчиков GitHub.

Но пост посвящён не нашему стартапу. Он о важном вопросе, не дававшем мне покоя последние три года. Почему фейсбукеры не пользуются Git? Зачем они выбрали Mercurial и создали на его основе собственные рабочие процессы? Я знаю что Google не пользуется Git, но это логично, культура разработки Google возникла на пять лет раньше Git. Facebook же был основан примерно в то же время, что и создан Git, около 2004 года, и ко времени, когда Facebook начал серьёзно выбирать инструментарий для управления исходниками, Git был старше и популярнее Mercurial. Так почему же Facebook не использует Git?

Читать далее
Всего голосов 78: ↑70 и ↓8 +62
Комментарии 297

Новости

Корзинка с сюрпризами — cпасите наши push'и

Время на прочтение 5 мин
Количество просмотров 2.7K
TLDR: Сделал набор скриптов автоматизации миграции Bitbucket репозиториев с Mercurial на Git.

В один непрекрасный день мой любимый хостинг репозиториев Bitbucket объявил о скором прекращении поддержки репозиториев Mercurial в пользу Git, после чего все Mercurial репозитории будут удалены.

image
Читать дальше →
Всего голосов 11: ↑10 и ↓1 +9
Комментарии 10

Переход с Mercurial на GIT в Atlassian Bitbucket с сохранением файлов в кириллице

Время на прочтение 3 мин
Количество просмотров 5.9K

Предыстория


Ещё летом в официальном блоге BitBucket опубликовали запись, в которой сообщили об окончании поддержки репозиториев Mercurial.

Прекращение поддержки Mercurial будет проходить в два этапа:

  1. С 1 февраля 2020 года пользователи больше не смогут создавать новые репозитории.
  2. С 1 июня 2020 года пользователи не смогут использовать функции Mercurial в Bitbucket или через его API, а все репозитории Mercurial будут удалены.

С причинами такого решения всё более-менее понятно, но я в работе использую несколько репозиториев на Mercurial (Mercurial мне всегда больше нравился, но этот вопрос я оставлю за рамками данной статьи), которые потребовалось сконвертировать в GIT.
Читать дальше →
Всего голосов 12: ↑12 и ↓0 +12
Комментарии 16

История систем управления версиями

Время на прочтение 17 мин
Количество просмотров 34K


В этой статье сравним с технической точки зрения самые известные системы управления версиями (в будущем планируем расширить список):

  1. Первое поколение
  2. Второе поколение
  3. Третье поколение
Читать дальше →
Всего голосов 16: ↑15 и ↓1 +14
Комментарии 25

Истории

Система управления проектами Redmine + Mercurial на Ubuntu 16.04

Время на прочтение 8 мин
Количество просмотров 21K
По мере увеличения числа вовлечённых в проект людей возникает необходимость как-то более эффективно организовывать и управлять их деятельностью. На начальном этапе для этой цели использовались Google-таблицы, но их возможности ограничены, и появилось желание перейти на новый уровень. Изучение доступных систем управления проектами показало, что из систем с открытым кодом Redmine наиболее продвинутая и по некоторым показателям обгоняет даже проприетарные системы.

Redmine, действительно, обладает большими возможностями: управление несколькими проектами, отслеживание ошибок, интеграция с репозиториями, перекрёстные ссылки на исправленные баги в коммитах и на коммиты в баг-репортах, назначение разных ролей пользователей в каждом проекте и т.д. Однако процедура установки довольна сложна, а для некоторых очень полезных функций требуется небольшая доработка или использование плагинов. Надеюсь, что предлагаемое ниже руководство поможет желающим использовать Redmine в своих проектах.
Читать дальше →
Всего голосов 12: ↑11 и ↓1 +10
Комментарии 12

6 секретов Bitbucket

Время на прочтение 4 мин
Количество просмотров 90K
Один из принципов дизайна в Atlassian — лаконичность. В ходе эволюции UX некоторые непопулярные действия, расчитанные на опытных пользователей, были спрятаны в выпадающих списках или за горячими клавишами. Там они ждут предприимчивого пользователя, который случайно наткнётся на них благодаря случайному нажатию клавиш или клику мышки (ну, или заглянет в руководство). Вот шесть моих любимых трюков Bitbucket Cloud, о которых вы, возможно, никогда не слышали:

Омнибар


Омнибар в Bitbucket — это строка быстрого доступа к действиям, похожая на ⇧⇧ в средах разработки JetBrains или ⌘+P в Sublime Text. Запустить омнибар можно на любой странице, нажав клавишу точки.

По умолчанию, он покажет набор действий, соответствующих текущему контексту:
Omnibar
Читать дальше →
Всего голосов 34: ↑33 и ↓1 +32
Комментарии 19

Mercurial: изменяем историю

Время на прочтение 7 мин
Количество просмотров 48K
Когда я познакомился с Mercurial, то все свои знания я почерпнул из статей Спольского (перевод на Хабре), которые подробно описывают основные принципы работы Mercurial и ежедневную работу с ним. Долгое время я использовал Mercurial в пределах, которые не превышали объема этих статей. Наверно, для одиночного разработчика этого почти достаточно. Почти. Но Mercurial сегодня значительно шире и обладает возможностями допускающими редактирование истории изменений, наличие которых, в общем-то, не очевидно, хотя возможности эти достаточно ценны. А из комментариев к разным статьям по системам управления версиями видно, что многие разработчики об этих возможностях не знают. Ниже я хочу провести обзор ряда возможностей Mercurial связанных с изменением истории.

О чем пойдет речь:

  • фазы
  • hg commit –amend
  • hg strip
  • hg rebase

Поехали
Всего голосов 26: ↑25 и ↓1 +24
Комментарии 4

Опрос по системам контроля версий

Время на прочтение 1 мин
Количество просмотров 47K
Какие системы контроля версий Вы используете (для собственных проектов и для работы)?
Всего голосов 80: ↑57 и ↓23 +34
Комментарии 166

Как развернуть систему контроля версий (VCS) без командной строки

Время на прочтение 8 мин
Количество просмотров 26K

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

Естественно, поиски были начаты с изучения Хабра — и привели к неожиданному результату. Несмотря на то, что системы контроля версий появились ещё в 1986 году, большинство туториалов по работе с современными системами контроля версий оказались неполными и сильно завязанными на работу с командной строкой.

Мы ничего не имеем против командной строки в целом, но в нашей небольшой команде разработчиков (4 человека) фанатов работы с командной строкой нет :).

Почему мы считаем, что работа с командной строкой неэффективна?

  1. Трата времени на ввод данных. Набивать команды намного дольше, чем кликать мышкой.
  2. Трата времени на обучение. Изучение нового синтаксиса в эпоху понятных интерфейсов однозначно дольше, чем обучение графическому интерфейсу.
  3. Вероятность ошибки. Ошибиться при вводе данных через командную строку легче (человеческий фактор никто не отменял).
  4. Нарушение принципов автоматизации. Возможно, это самый главный пункт. Компьютер создан для ускорения работы и замене человека при выполнении рутинных операций. В случае с командной строкой мы всегда работаем вручную, по сути, приходится каждый раз писать один и тот же программный код (пусть и примитивный).

К сожалению, нам не удалось найти полноценного русскоязычного мануала по работе с современными системами контроля версий. Собрав информацию из разных статей и англоязычных видео на YouTube, мы решили сделать своё собственное руководство, которое:

  1. Будет пошаговой инструкций (по ней же будут работать наши программисты).
  2. Будет работать от начала и до конца (то есть по ней вы получите небольшой, но законченный результат — работающую распределенную систему контроля версий).
  3. Будет работать с использованием только графических интерфейсов (причины см. выше).
Читать дальше →
Всего голосов 45: ↑11 и ↓34 -23
Комментарии 26

Получение списка файлов в удалённом репозитории

Время на прочтение 6 мин
Количество просмотров 7.5K
Как‐то понадобился мне просмотр списка файлов в удалённом репозитории. Клонировать его при этом как‐то не очень хотелось. Поиск в интернете ожидаемо дал множество ответов вида «это невозможно, делайте клон». А мне‐то надо всего‐навсего убедиться, что по некоторой ссылке находится репозиторий, соответствующий некоторому архиву с исходными кодами. Так как «некоторая ссылка» находится на странице с описанием содержимого этого архива (точнее, дополнения в этом архиве), то мне показалось достаточным сравнить только список файлов. Как быть?
Конечно, Mercurial не предоставляет практически никаких возможностей работы с удалённым репозиторием. Точнее, можно сделать push и pull (ну и clone как частный случай последнего). Но можно ли сделать pull, не затрагивая при этом файловую систему? Ответ: можно, здесь нам поможет hg incoming. Собственно, алгоритм работы такой:
Читать дальше →
Всего голосов 8: ↑7 и ↓1 +6
Комментарии 10

Полезности Mercurial

Время на прочтение 5 мин
Количество просмотров 37K
Думаю, почти все читающие знают, что такое Mercurial — это распределённая система контроля версий, для исходного кода и других (преимущественно текстовых) файлов. Многие ей пользуются, и знают основные команды, как то удаление/добавление файлов, создание коммита и отправка локальных изменений в другие репозитории. Однако, Mercurial имеет множество не столь известных функций и команд, которые часто достаточно полезны и удобны. Некоторые из них можно использовать сразу после установки по-умолчанию, некоторые нужно включить в настройках, а для других может потребоваться скачать дополнительное расширение.

Краткий список того, о чём пойдёт речь в статье:

  • hg serve (hgweb) — встроенный веб-сервер
  • расширения pager, progress и color
  • hg [c]record — выбор отдельных изменений для коммита
  • revsets и filesets — поиск коммитов и файлов с запросами любой сложности
  • hg evolve — Changeset Evolution или же «изменяемая история»


logo
Узнать подробности...
Всего голосов 37: ↑36 и ↓1 +35
Комментарии 50

Review Board + Mercurial — опыт внедрения и автоматизации процесса code review

Время на прочтение 7 мин
Количество просмотров 13K
mercurial-review-boardНекоторое время назад в компании, где я работаю в связи с расширением комманды было принято решение о введении процесса code review. Выбор инструмента пал на Review Board — продукт обладает достаточным функционалом, активно разрабатывается с 2006 года и является open source. В качестве системы контроля версий у нас используется Mercurial

О том, с чем какими задачами столкнулись при организации процесса код ревью для связки Review Board + Mercurial — под катом.
Читать дальше →
Всего голосов 6: ↑3 и ↓3 0
Комментарии 24

Стиль именования коммитов

Время на прочтение 4 мин
Количество просмотров 118K
the Octobi Wan Catnobi

Про многие моменты разработки есть очень много информации. Как писать комментарии, как именовать классы, методы, какие паттерны использовать и т.д. и т.п. Но есть одна область, в которой многие даже и не задумываются о том, что можно что-то улучшить — это написание коммитов.
Читать дальше →
Всего голосов 59: ↑43 и ↓16 +27
Комментарии 51

Ближайшие события

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн

Bitbucket выпустил лимитированную серию брендированных футболок

Время на прочтение 1 мин
Количество просмотров 6.5K
Привет, сообщество!

В честь 1 миллиона своих пользователей сервис Bitbucket.org предлагает купить лимитированную серию футболок со своим брендом со скидкой 50% на дочернем сервисе компании AtlassianSwag. Стоимость такой футболки $20. Сервис (bitbucket) даёт купон на скидку $10 при приглашении в репозиторий новых пользователей.


Читать дальше →
Всего голосов 19: ↑12 и ↓7 +5
Комментарии 8

Bitbucket достиг одного миллиона пользователей — летим праздновать в Сан-Франциско

Время на прочтение 2 мин
Количество просмотров 11K
Сегодня на свой электронный ящик я получил приглашение на участие в конкурсе от Bitbucket. В нём говорится, что сервис репозиториев Bitbucket достиг порога в 1 миллион пользователей, в связи с чем устраивается конкурс с главным призом — поездка на хакатон в Сан-Франциско.

image
Читать дальше →
Всего голосов 37: ↑35 и ↓2 +33
Комментарии 19

Сравнение Subversion и Mercurial (HG)

Время на прочтение 7 мин
Количество просмотров 11K
Мое первое знакомство с системой контроля версий было еще в школе. Это был Subversion. В то время меня очень впечатлила его сила и возможности. Но шло время. Были не очень приятные моменты с переименовыванием файлов, каталогов и прочее (да, да здравствует svn 1.5, 1.6 и его вечные папки .svn). И все бы продолжалось в том же духе, если бы однажды в компании не задумались о смене системы контроля версий. Все случилось неожиданно быстро и предо мной возник Mercurial. Пришлось почитать о его особенностях, поспрашивать советов бывалых и вот я уже сам помогал своим коллегам разобраться в поведении и работе нового инструмента. Чем дольше я знакомился с Hg, тем больше он мне нравился, точнее, нравился его децентрализованный подход к контролю версий, Subversion же неизбежно отходил на второй план.
Однако, на новом месте работы мне снова пришлось вспомнить о Subversion, что, честно сказать, меня не обрадовало. К счастью, это не было безоговорочной политикой компании и предложить альтернативу было вполне реально, особенно учитывая, что некоторые сотрудники предпочли Git и успешно с ней работают. Значит, дело за малым – наглядно показать, в чем же преимущества работы с децентрализованными системами контроля версий: Git или Mercurial, но, в силу моего личного опыта, рассказать я решил про Hg. Собственно, эта статья есть краткое содержание круглого стола, проведенного мной с целью сравнения и смены системы контроля версий.
Добро пожаловать на круглый стол.
Всего голосов 27: ↑17 и ↓10 +7
Комментарии 9

Обновление Windows Azure: Hadoop, Dropbox, Mercurial, PhoneGap

Время на прочтение 4 мин
Количество просмотров 6K
image

18 марта Скотт Гатри в своем блоге анонсировал очередные нововведения в облачную платформу Windows Azure. Представленный новый функционал включает в себя:



  • HTML5-клиенты (CORS) для Windows Azure Mobile Services, включая доступ из популярной библиотеки PhoneGap;
  • улучшенная поддержка Windows Phone 7.5, новые библиотеки и пакет Nuget;
  • поддержка размещения веб-сайтов из Mercurial (Bitbucket, Codeplex) и Dropbox;
  • новые шаблоны в Web Sites;
  • публичный доступ к сервису HDInsight – облачной платформе Hadoop как сервис.

Ниже о этих нововведениях чуть подробнее.



Поддержка HTML5/JS-клиентов и PhoneGap в Mobile Services


Windows Azure Mobile Services предлагает облачную инфраструктуру для всех популярных мобильных платформ: Windows 8, Windows Phone, iOS и Android. В текущем обновлении к поддержке мобильных платформ добавилась поддержка веб-клиентов на HTML5/JS, в частности популярной библиотеки PhoneGap. Теперь вы можете получить доступ ко всем данным сохраненным из мобильных клиентов через код написанный на HTML5/JS.


Читать дальше →
Всего голосов 28: ↑16 и ↓12 +4
Комментарии 9

Война закончена, все победили

Время на прочтение 3 мин
Количество просмотров 12K
На прошлой неделе Fog Creek объявила об окончании войны между Git и Mercurial. Точнее, проанонсировала таким экстравагантным образом выпуск Kiln 3.0 с поддержкой одновременной работы с репозиториями через Git или Mercurial.

Kiln это онлайн-хостинг Hg и Git репозиториев с продвинутой системой code review и управлением группами проектов и пользователей. В связи с новым релизом и провокационным утверждением по поводу войны DVCS, да и тем, что Kiln не очень широко представлен на Хабре, стоит упомянуть несколько ключевых моментов.

Например, что бесплатная версия Kiln не ограничена по времени если у вас до 2х пользователей…
Читать дальше →
Всего голосов 32: ↑18 и ↓14 +4
Комментарии 6

Kiln Harmony — Mercurial + git в одном репозитории

Время на прочтение 3 мин
Количество просмотров 10K
Fog Creek – компания созданная Джоелом Спольски и, возможно, известная вам по продукту Trello, на прошлой неделе представила свой новый проект державшийся долгое время в тайне: Kiln Harmony. Это хостинг Mercurial (hg) и git репозиториев. К сожалению, исключительно платный, есть только 45 дней пробного периода. В чём же новость, спросите вы, если Mercurial + git хостинги уже есть на рынке и, в том числе, бесплатные, как Bitbucket.org? Особенность Kiln Harmony в том, что один репозиторий на хостинге одновременно является и Mercurial и git репозиторием! По заявлениям разработчиков великий холивар закончен и теперь вы можете соредоточиться на кодинге, а не на выборе системы контроля версий. Push и pull в единый репозиторий размещённый на Kiln Harmony из вашей любимой системы контроля версий (Mercurial или git) не требует установки отдельных расширений, типа hg-git, или других особых телодвижений, вся магия происходит на сервере.
Читать дальше →
Всего голосов 40: ↑36 и ↓4 +32
Комментарии 26

Переход на DVCS, Mercurial

Время на прочтение 13 мин
Количество просмотров 6.4K

С какой целью и для кого


Данная статья является кратким изложением основных преимуществ DVCS.
Я собрал воедино все доводы о пользе перехода на DVCS (а именно mercurial) и постараюсь доступно изложить это для тех у кого не было практического опыта работы ни с одной из DVCS.
Читать дальше →
Всего голосов 25: ↑22 и ↓3 +19
Комментарии 32
1

Вклад авторов