Меркуриальный

Распределенный инструмент контроля версий для разработчиков программного обеспечения

Меркуриальный
Разработчик(и)Оливия Макалл [а] (на пенсии), [1] Пьер-Ив Давид
Первоначальный выпуск19 апреля 2005 г. ; 19 лет назад [2] ( 2005-04-19 )
Стабильный релиз
6.4rc0 [3]  / 2 марта 2023 г.; 8 июля 2024 г.; 1 августа 2024 г.; 28 октября 2024 г.
Репозиторий
  • repo.mercurial-scm.org/hg-stable
Написано в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.

Рисунок 1: Некоторые важные операции 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:

Проекты с открытым исходным кодом, использующие Mercurial

Некоторые проекты, использующие распределенную систему Mercurial RCS: [25]

Смотрите также

Примечания

  1. ^ ab Оливия Макколл — бывшее имя Мэтт Макколл. [6]

Ссылки

  1. ^ "mpm - Mercurial". Mercurial . Получено 24 февраля 2023 г. .
  2. ^ ab Mackall, Matt (20 апреля 2005 г.). «Mercurial v0.1 – минимальный масштабируемый распределенный SCM». Ядро Linux (список рассылки).
  3. ^ "набор изменений 50269:05de4896508e стабильная версия 6.4rc0".
  4. ^ "Файл README в подкаталоге Rust, ветка master". 24 января 2020 г. Получено 30 января 2020 г.
  5. ^ Макколл, Мэтт. «К лучшему SCM: Revlog и Mercurial» (PDF) . Mercurial . Архивировано (PDF) из оригинала 26 мая 2019 г. . Получено 26 мая 2019 г. .
  6. ^ "Мэтт Макколл теперь Оливия Макколл". Mercurial . Получено 28 мая 2021 г. .
  7. ^ «Повторное лицензирование», Mercurial (вики), Mercurial-scm.org.
  8. ^ Mackall, Matt (29 апреля 2005 г.). "Re: Mercurial 0.4b vs git patchbomb benchmark". Ядро Linux (список рассылки). Архивировано из оригинала 9 июля 2012 г.
  9. ^ Макколл, Мэтт (15 февраля 2012 г.). «Почему Мэтт выбрал название Mercurial?». Mercurial (список рассылки) . Получено 7 июня 2016 г.
  10. ^ Торвальдс сказал: «Я эгоистичный ублюдок, поэтому все свои проекты я называю в честь себя. Сначала Linux, теперь git».
  11. Джеймс Гослинг (октябрь 2006 г.). «Открытый исходный код реализаций платформы Java от Sun, часть 1» (интервью). Интервью взял Роберт Экштейн. Sun. Архивировано из оригинала 1 марта 2009 г.{{cite interview}}: CS1 maint: неподходящий URL ( ссылка )
  12. ^ «Масштабирование Mercurial в Facebook». 7 января 2014 г.
  13. ^ «Сервер управления исходным кодом Mercurial, специально разработанный для поддержки больших монорепозиториев.: facebookexperimental/mononoke». 31 января 2019 г. – через GitHub.
  14. ^ Szorc, Gregory (17 октября 2016 г.). «Mercurial 4.0 Sprint Notes». mozilla.dev.version-control. Группы Google . Получено 22.11.2021 .
  15. ^ Гуд, Дарем; Агарвал, Сиддхарт (7 января 2014 г.). «Масштабирование Mercurial в Facebook». Код Facebook . Получено 13 октября 2015 г. – через Facebook.
  16. ^ «Почему Google хранит миллиарды строк кода в одном репозитории».
  17. ^ "Sunsetting Mercurial support in Bitbucket". 21 апреля 2020 г. Архивировано из оригинала 1 июля 2020 г.
  18. ^ ab Chan, Denise (20 августа 2019 г.). "Sunsetting Mercurial support in Bitbucket". Bitbucket . Получено 29 августа 2019 г. .
  19. ^ "Git, Mercurial & Subversion hosting". Features . Codebase HQ. 4 марта 2013 г. Архивировано из оригинала 30 марта 2014 г. Получено 4 марта 2013 г.
  20. ^ «Начнем разработку OSS с Mercurial (Hg) – OSDN». osdn.net .
  21. ^ "Хостинг", Mercurial (вики), Mercurial-scm.org.
  22. ^ "Попробуйте Helix TeamHub бесплатно | Perforce". info.perforce.com .
  23. ^ "Добро пожаловать [Пуща]" . ps.gnu.org.ua.
  24. ^ "TuxFamily: Бесплатный хостинг для свободных людей". tuxfamily.org .
  25. ^ «Некоторые проекты, использующие Mercurial», Mercurial (вики), Mercurial-scm.org.
  26. Рид, Дж. Пол (12 апреля 2007 г.). «Система контроля версий Shootout Redux Redux».
  27. ^ mozilla-mobile/fenix, Mozilla Mobile, 19 марта 2021 г. , получено 19 марта 2021 г.
  • Официальный сайт
Взято с "https://en.wikipedia.org/w/index.php?title=Mercurial&oldid=1245986062"