stringtranslate.com

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

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.

Рисунок 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

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

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

Примечания

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

Рекомендации

  1. ^ "mpm - Mercurial" . Меркуриальный . Проверено 24 февраля 2023 г.
  2. ^ Аб Макколл, Мэтт (20 апреля 2005 г.). «Mercurial v0.1 – минимальная масштабируемая распределенная SCM». Ядро Linux (список рассылки).
  3. ^ "Тег Mercurial 6.6.2" .
  4. ^ «Файл README в подкаталоге Rust, основная ветка» . 24 января 2020 г. Проверено 30 января 2020 г.
  5. ^ Макколл, Мэтт. «На пути к лучшему SCM: Revlog и Mercurial» (PDF) . Меркуриальный . Архивировано (PDF) из оригинала 26 мая 2019 года . Проверено 26 мая 2019 г.
  6. ^ «Мэтт Макколл теперь Оливия Макколл» . Меркуриальный . Проверено 28 мая 2021 г.
  7. ^ «Перелицензирование», Mercurial (вики), Mercurial-scm.org.
  8. Макколл, Мэтт (29 апреля 2005 г.). «Re: Mercurial 0.4b против теста git patchbomb» . Ядро Linux (список рассылки). Архивировано из оригинала 9 июля 2012 года.
  9. Макколл, Мэтт (15 февраля 2012 г.). «Почему Мэтт выбрал имя Меркуриал?». Mercurial (список рассылки) . Проверено 7 июня 2016 г.
  10. Торвальдс сказал: «Я эгоистичный ублюдок, поэтому называю все свои проекты в честь себя. Сначала Linux, теперь git».
  11. ^ Джеймс Гослинг (октябрь 2006 г.). «Реализация платформы Java с открытым исходным кодом Sun, часть 1» (интервью). Беседовал Роберт Экстайн. Солнце. Архивировано из оригинала 1 марта 2009 года.{{cite interview}}: CS1 maint: неподходящий URL ( ссылка )
  12. ^ «Масштабирование Mercurial в Facebook». 7 января 2014 г.
  13. ^ «Сервер управления версиями Mercurial, специально разработанный для поддержки больших монорепозиториев: facebookexperimental/mononoke» . 31 января 2019 г. – через GitHub.
  14. ^ Сзорц, Грегори (17 октября 2016 г.). «Заметки о спринте Mercurial 4.0». mozilla.dev.контроль версий. Группы Google . Проверено 22 ноября 2021 г.
  15. ^ Гуд, Дарем; Агарвал, Сиддхарт (7 января 2014 г.). «Масштабирование Mercurial в Facebook». Код Фейсбука . Проверено 13 октября 2015 г. - через Facebook.
  16. ^ «Почему Google хранит миллиарды строк кода в одном репозитории» .
  17. ^ «Закат поддержки Mercurial в Bitbucket» . 21 апреля 2020 г. Архивировано из оригинала 1 июля 2020 г.
  18. ↑ Аб Чан, Дениз (20 августа 2019 г.). «Закат поддержки Mercurial в Bitbucket». Битбакет . Проверено 29 августа 2019 г.
  19. ^ «Хостинг Git, Mercurial и Subversion» . Функции . Штаб-квартира кодовой базы. 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 г.

Внешние ссылки