Mercurial — это распределенный инструмент контроля версий для разработчиков программного обеспечения . Он поддерживается в Microsoft Windows , Linux и других Unix-подобных системах, таких как FreeBSD и macOS .
Основные цели разработки Mercurial включают высокую производительность и масштабируемость, децентрализацию, полностью распределенную совместную разработку, надежную обработку как простых текстовых , так и двоичных файлов , а также расширенные возможности ветвления и слияния, оставаясь при этом концептуально простыми. [5] Включает интегрированный веб-интерфейс. Mercurial также предпринял шаги, чтобы облегчить переход для пользователей других систем контроля версий, в частности Subversion . Mercurial — это, прежде всего, программа, управляемая из командной строки , но доступны расширения графического пользовательского интерфейса , например TortoiseHg , а некоторые IDE предлагают поддержку контроля версий с помощью Mercurial. Все операции Mercurial вызываются как аргументы его программы-драйвера hg
(ссылка на Hg – химический символ элемента ртути ).
Оливия Макколл [а] создала Mercurial и была его ведущим разработчиком до конца 2016 года. Mercurial выпускается как бесплатное программное обеспечение под лицензией GPL-2.0 или более поздней версии . [7] В основном он реализован с использованием языка программирования Python , но включает реализацию двоичного сравнения , написанную на C.
Макколл впервые анонсировал Mercurial 19 апреля 2005 года. [2] Толчком к этому послужило объявление ранее в том же месяце Bitmover о том, что они отзывают бесплатную версию BitKeeper из-за разработки SourcePuller .
BitKeeper использовался для требований контроля версий проекта ядра Linux . Макколл решил написать распределенную систему контроля версий в качестве замены ядру Linux. Этот проект стартовал через несколько дней после того, как Линус Торвальдс инициировал ныне известный проект Git с аналогичными целями. [8]
В проекте ядра Linux было решено использовать Git , а не Mercurial, но сейчас Mercurial используется во многих других проектах (см. ниже).
В ответе в списке рассылки Mercurial Оливия Макколл объяснила, как было выбрано название «Mercurial»:
Незадолго до первого выпуска я прочитал статью о продолжающемся фиаско Bitkeeper, в которой Ларри Маквоя описывался как непостоянный (в смысле «непостоянный»). Учитывая множество значений, удобное сокращение и хорошее соответствие с моей уже существующей схемой именования (см. мой адрес электронной почты), оно мгновенно мне понравилось. Таким образом, Mercurial назван в честь Ларри. Я не знаю, верно ли то же самое для Git. [9] [10]
В таких громких проектах, как OpenJDK, Mercurial использовался в прошлом [11] , хотя OpenJDK больше не использует его, начиная с Java 16.
Mercurial использует хэши SHA-1 для идентификации версий. Для доступа к хранилищу через сеть Mercurial использует протокол на основе HTTP , который стремится сократить количество двусторонних запросов, новых подключений и передаваемых данных. Mercurial также может работать через SSH , протокол которого очень похож на протокол на основе HTTP. По умолчанию перед вызовом внешних инструментов слияния используется трехстороннее слияние .
На рис. 1 показаны некоторые наиболее важные операции Mercurial и их связь с концепциями Mercurial.
Хотя Mercurial не был выбран для управления исходными кодами ядра Linux, он был принят несколькими организациями, включая Facebook , [12] W3C и Mozilla . Facebook использует язык программирования Rust для написания Mononoke, [13] [14] сервера Mercurial, специально разработанного для поддержки больших многопроектных репозиториев.
В 2013 году Facebook внедрил Mercurial и начал работу над его масштабированием для работы со своим большим унифицированным хранилищем кода. [15]
Google также использует клиент Mercurial в качестве внешнего интерфейса для своего облачного внутреннего хранилища монорепозитория Piper. [16]
Bitbucket объявила, что ее веб-службы контроля версий прекратят поддержку Mercurial в июне 2020 года (затем она будет продлена до июля 2020 года), [17] пояснив, что «менее 1% новых проектов используют его, а опросы разработчиков показали, что 90% разработчики используют Git». [18]
Следующие веб-сайты предоставляют бесплатный хостинг исходного кода для репозиториев Mercurial:
Некоторые проекты, использующие распределенную RCS Mercurial: [25]
{{cite interview}}
: CS1 maint: неподходящий URL ( ссылка )