Разработчики) | Мэтт Макколл |
---|---|
Начальная версия | 19 апреля 2005 г . [1] |
Стабильный выпуск | 5.7.1 [2] / 8 марта 2021 г . |
Репозиторий | |
Написано в | Python , C и Rust [3] |
Операционная система | Unix-подобный , Windows , macOS |
Тип | Контроль версий |
Лицензия | GNU GPL v2 + |
Веб-сайт | www |
Mercurial - это инструмент распределенного контроля версий для разработчиков программного обеспечения . Он поддерживается в Microsoft Windows и Unix-подобных системах, таких как FreeBSD , macOS и Linux .
Основные цели дизайна Mercurial включают высокую производительность и масштабируемость, децентрализацию, полностью распределенную совместную разработку, надежную обработку как простых текстовых, так и двоичных файлов , а также расширенные возможности ветвления и слияния, оставаясь при этом концептуально простыми. [4] Включает интегрированный веб-интерфейс. Mercurial также предпринял шаги, чтобы облегчить переход для пользователей других систем контроля версий, особенно Subversion . Mercurial - это в первую очередь программа, управляемая из командной строки , но доступны расширения графического пользовательского интерфейса , например TortoiseHg , и несколько IDE.предложить поддержку управления версиями с Mercurial. Все операции Mercurial вызываются в качестве аргументов его программы-драйвера hg
(ссылка на Hg - химический символ элемента ртути ).
Мэтт Макколл основал Mercurial и был его ведущим разработчиком до конца 2016 года. Mercurial выпускается как бесплатное программное обеспечение в соответствии с условиями GNU GPL v2 (или любой более поздней версии [5] ). Это в основном реализуется с помощью языка программирования Python , но включает в себя двоичный дифф реализацию , написанной на C .
История [ править ]
Mackall впервые объявил о Mercurial 19 апреля 2005 года. [1] Толчком к этому послужило объявление ранее в том же месяце Bitmover об отмене бесплатной версии BitKeeper из-за разработки SourcePuller .
BitKeeper использовался для требований контроля версий проекта ядра Linux . Макколл решил написать распределенную систему контроля версий в качестве замены для использования с ядром Linux. Этот проект стартовал через несколько дней после того , как Линус Торвальдс инициировал теперь хорошо известный проект Git с аналогичными целями. [6]
В проекте ядра Linux было решено использовать Git, а не Mercurial, но Mercurial теперь используется во многих других проектах (см. Ниже ). «Git vs. Mercurial» стал одной из священных войн хакерской культуры . [7]
В ответе на список рассылки Mercurial Мэтт Макколл объяснил, как было выбрано имя «Mercurial»:
Незадолго до первого релиза я прочитал статью о продолжающемся разгроме Bitkeeper, в которой Ларри Маквой описывался как непостоянный (в смысле «непостоянный»). Учитывая множество значений, удобную аббревиатуру и хорошее соответствие моей ранее существовавшей схеме именования (см. Мой адрес электронной почты), он мгновенно щелкнул. Таким образом, Mercurial назван в честь Ларри. Я не знаю, верно ли то же самое в отношении Git. [8] [9]
В крупных проектах, таких как Java, то есть OpenJDK , используется Mercurial [10] (но больше не используется в Java 16).
Дизайн [ править ]
Mercurial использует хэши SHA-1 для идентификации ревизий. Для доступа к репозиторию через сеть Mercurial использует протокол на основе HTTP , который стремится сократить количество двусторонних запросов, новых подключений и передаваемых данных. Mercurial также может работать через SSH, где протокол очень похож на протокол на основе HTTP. По умолчанию перед вызовом внешних инструментов слияния используется трехстороннее слияние .
Использование [ править ]
На рисунке 1 показаны некоторые из наиболее важных операций в Mercurial и их отношения с концепциями Mercurial.
Принятие [ править ]
Хотя Mercurial не была выбрана для управления исходниками ядра Linux, он был принят несколько организаций, в том числе Facebook , [11] в W3C , и Mozilla . Facebook использует язык программирования Rust для написания Mononoke, [12] [13] сервера Mercurial, специально разработанного для поддержки больших многопроектных репозиториев.
В 2013 году Facebook принял Mercurial и начал работу над его масштабированием для обработки своего большого унифицированного репозитория кода. [14]
Google также использует Mercurial в своем монорепозитории Piper. [15]
Bitbucket объявил, что его веб-службы управления версиями прекратят поддержку Mercurial в июне 2020 года (затем продлили до июля 2020 года) [16], объяснив, что «менее 1% новых проектов используют его, а опросы разработчиков показали, что 90% разработчики используют Git ». [17] Между тем, сотни пользователей открыто сомневались в причинах массового удаления исторических данных, спрашивали, почему не было значительного предупреждения или официального плана миграции, и запаниковали по поводу поспешных сроков в своей официальной ветке поддержки компании. [18]
Mercurial серверы и управление репозиториями [ править ]
- Heptapod , форк Gitlab для Mercurial от Octobus
- Калифея , GPLv3 вилка RhodeCode
- Печь от Fog Creek Software
- Фабрикатор от Phacility
- RhodeCode от RhodeCode Inc.
Хостинг исходного кода [ править ]
Следующие веб-сайты предоставляют бесплатный хостинг исходного кода для репозиториев Mercurial:
- Bitbucket от Atlassian (не рекомендуется с февраля 2020 года; только для чтения с июля 2020 года) [17]
- Кодовая база [19]
- FusionForge
- GNU Savannah от FSF
- Гептапод
- Моздев
- OSDN [20]
- Другое [21]
- Неизвестно [22]
- Puszcza [23] (дочерний сайт GNU Savannah, размещенный в Украине)
- SourceForge
- SourceHut
- TuxFamily [24]
Проекты с открытым исходным кодом, использующие Mercurial [ править ]
Некоторые проекты, использующие распределенную RCS Mercurial: [25]
- GNU Health
- Библиотека GNU Multi-Precision
- GNU Octave
- ЛИМОН
- Жидкость
- Mozilla [26] (также использует Git / GitHub [27] )
- Nginx
- Ортханк
- Пиджин
- RhodeCode
- Округлять
- Трайтон
- WinDirStat
- wmii
- XEmacs
- Xine
См. Также [ править ]
- Сравнение программного обеспечения для контроля версий
- Распределенный контроль версий
- Список программного обеспечения для контроля версий
Ссылки [ править ]
- ^ a b Mackall, Мэтт (20 апреля 2005 г.). «Mercurial v0.1 - минимальная масштабируемая распределенная SCM» . Ядро Linux (список рассылки).
- ^ https://www.mercurial-scm.org/repo/hg/rev/5.7.1 .
- ^ "Файл README в подкаталоге rust, главная ветвь" . 24 января 2020 . Проверено 30 января 2020 года .
- ^ Mackall, Мэтт. «На пути к лучшему SCM: Revlog и Mercurial» (PDF) . Меркуриал . Архивировано 26 мая 2019 года (PDF) . Проверено 26 мая 2019 .
- ^ "Relicensing" , Mercurial (wiki), Mercurial-scm.org.
- ^ Mackall, Matt (29 апреля 2005). «Re: Mercurial 0.4b против теста git patchbomb» . Ядро Linux (список рассылки). Архивировано из оригинала 9 июля 2012 года.
- ^ «Управление исходным кодом с помощью Mercurial» .
Поклонники Mercurial и Git также будут рады обсудить кривую обучения, достоинства и удобство использования набора команд каждой системы VCS.
Пробел препятствует этому обсуждению здесь, но поиск в Интернете по этой теме предоставит много интересных материалов для чтения.
- ^ Mackall, Matt (15 февраля 2012). "Почему Мэтт выбрал имя Mercurial?" . Mercurial (список рассылки) . Проверено 7 июня +2016 .
- ^ Торвальдс сказал: «Я эгоистичный ублюдок, поэтому я называю все свои проекты в честь себя. Сначала Linux, теперь git».
- ^ Джеймс Гослинг (октябрь 2006 г.). «Реализации Java-платформы Sun с открытым исходным кодом, часть 1» (интервью). Беседовал Роберт Экштейн. Солнце. Архивировано 1 марта 2009 года.CS1 maint: неподходящий URL ( ссылка )
- ^ «Масштабирование Mercurial в Facebook» . 7 января 2014 г.
- ^ "Сервер управления версиями Mercurial, специально разработанный для поддержки больших монорепозиций: facebookexperimental / mononoke" . 31 января 2019 г. - через GitHub.
- ^ "Группы Google" .
- ^ Гуд, Дарем; Агарвал, Сиддхартх. «Масштабирование Mercurial в Facebook» . Код Facebook . Проверено 13 октября 2015 г. - через Facebook.
- ^ «Почему Google хранит миллиарды строк кода в одном репозитории» .
- ^ «Прекращение поддержки Mercurial в Bitbucket» . 21 апреля 2020 года. Архивировано 1 июля 2020 года.
- ^ a b Чан, Дениз (20 августа 2019 г.). «Прекращение поддержки Mercurial в Bitbucket» . Bitbucket . Проверено 29 августа 2019 .
- ^ «Что делать с репозиториями Mercurial, если Bitbucket поддерживает закаты» . Архивировано 11 июля 2020 года. Альтернативный URL
- ^ «Хостинг Git, Mercurial и Subversion» . Особенности . Кодовая база HQ. 4 марта 2013 г. Архивировано из оригинала на 30 марта 2014 года . Проверено 4 марта 2013 года .
- ^ «Давайте начнем разработку OSS с Mercurial (Hg) - OSDN» . osdn.net .
- ^ "Хостинг", Mercurial (вики), Mercurial-scm.org.
- ^ «Попробуйте Helix TeamHub Free | Perforce» . info.perforce.com .
- ^ "Добро пожаловать [Puszcza]" . ps.gnu.org.ua .
- ^ «TuxFamily: бесплатный хостинг для свободных людей» . tuxfamily.org .
- ^ «Некоторые проекты, использующие Mercurial» , Mercurial (wiki), Mercurial-scm.org.
- ↑ Рид, Дж. Пол (12 апреля 2007 г.). "Система управления версиями Shootout Redux Redux" .
- ^ mozilla-mobile / fenix , Mozilla Mobile, 19 марта 2021 г. , получено 19 марта 2021 г.
Внешние ссылки [ править ]
Поищите mercurial в Викисловаре, бесплатном словаре. |
Викискладе есть медиафайлы по теме Mercurial . |
- Макколл, Мэтт, "Подкаст FLOSS" , на этой неделе в Tech
- О'Салливан, Брайан (2009), Mercurial: The Definitive Guide (книга), О'Рейли, в свободном доступе в Интернете
- Spolsky, Joel, руководство Mercurial , заархивировано из оригинала 13 июня 2016 г. , извлечено 6 апреля 2010 г.
- Учебное пособие по Mercurial на основе примеров (PDF) , SE : Jemander охватывает как базовое, так и расширенное использование
- «Mercurial: альтернатива git» , LWN
- «Subversion или CVS, Bazaar или Mercurial? Сравнение четырех систем контроля версий с открытым исходным кодом» , JavaWorld , сентябрь 2007 г.
- «Меркуриал», TechTalk (видео)
- Список проектов, использующих Mercurial из Mercurial wiki
- Официальный сайт