Разработчик(и) | Оливия Макалл [а] (на пенсии), [1] Пьер-Ив Давид |
---|---|
Первоначальный выпуск | 19 апреля 2005 г. ( 2005-04-19 ) | [2]
Стабильный релиз | 6.4rc0 [3] / 2 марта 2023 г.; 8 июля 2024 г.; 1 августа 2024 г.; 28 октября 2024 г. |
Репозиторий |
|
Написано в | Python , C и Rust [4] |
Операционная система | Unix-подобный , Windows , macOS |
Тип | Контроль версий |
Лицензия | GPL-2.0 или более поздняя версия |
Веб-сайт | www.mercurial-scm.org |
Mercurial — это распределенный инструмент контроля версий для разработчиков программного обеспечения . Он поддерживается в Microsoft Windows , Linux и других Unix-подобных системах, таких как FreeBSD и macOS .
Основные цели дизайна Mercurial включают высокую производительность и масштабируемость, децентрализацию, полностью распределенную совместную разработку, надежную обработку как простых текстовых , так и двоичных файлов , а также расширенные возможности ветвления и слияния, при этом оставаясь концептуально простым. [5] Он включает интегрированный веб-интерфейс. Mercurial также предпринял шаги для облегчения перехода для пользователей других систем контроля версий, в частности Subversion . Mercurial в первую очередь является программой, управляемой из командной строки , но доступны расширения графического пользовательского интерфейса , например TortoiseHg , и несколько IDE предлагают поддержку контроля версий с Mercurial. Все операции Mercurial вызываются в качестве аргументов его программы-драйвера hg
(ссылка на Hg — химический символ элемента ртуть ).
Оливия Макколл [a] создала Mercurial и была его ведущим разработчиком до конца 2016 года. Mercurial выпускается как свободное программное обеспечение по лицензии GPL-2.0 или более поздней версии . [7] Он в основном реализован с использованием языка программирования Python , но включает в себя двоичную реализацию diff, написанную на C.
Mackall впервые анонсировал Mercurial 19 апреля 2005 года. [2] Толчком к этому послужило заявление Bitmover , сделанное ранее в том же месяце, о том, что они отзывают бесплатную версию BitKeeper из-за разработки SourcePuller .
BitKeeper использовался для требований контроля версий проекта ядра Linux . Макколл решил написать распределенную систему контроля версий в качестве замены для использования с ядром Linux. Этот проект начался через несколько дней после того, как Линус Торвальдс инициировал теперь известный проект Git с аналогичными целями. [8]
Проект ядра Linux решил использовать Git вместо Mercurial, но Mercurial теперь используется во многих других проектах (см. ниже).
В своем ответе в почтовой рассылке Mercurial Оливия Макколл объяснила, как было выбрано название «Mercurial»:
Незадолго до первого релиза я прочитал статью о продолжающемся фиаско Bitkeeper, в которой Ларри МакВой описывался как mercurial (в смысле «непостоянный»). Учитывая множественность значений, удобную аббревиатуру и хорошее соответствие моей уже существующей схеме именования (см. мой адрес электронной почты), это сразу же пришло мне в голову. Mercurial, таким образом, назван в честь Ларри. Я не знаю, относится ли то же самое к Git. [9] [10]
Такие известные проекты, как OpenJDK , в прошлом использовали Mercurial [11], хотя OpenJDK больше не делает этого, начиная с Java 16.
Mercurial использует хэши SHA-1 для идентификации ревизий. Для доступа к репозиторию через сеть Mercurial использует протокол на основе HTTP , который стремится сократить запросы на круговую передачу, новые соединения и передаваемые данные. Mercurial также может работать по SSH , где протокол очень похож на протокол на основе HTTP. По умолчанию он использует 3-стороннее слияние перед вызовом внешних инструментов слияния.
На рисунке 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:
Некоторые проекты, использующие распределенную систему Mercurial RCS: [25]
{{cite interview}}
: CS1 maint: неподходящий URL ( ссылка )