Mercurial
Mercurial (в переводе с англ. подвижный, ртутный), также известен как Hg (химический элемент "ртуть" в таблице Менделеева), — это распределённая кросс-платформенная система контроля версий, которая разработана для работы с очень большими репозиториями кода более эффективно. Вся система основывается на консольной программе.
Исходный код Mercurial написан на языке программирования Python, но требовательные к производительности участки разработаны как модули-расширения на языке Си (например, своя версия утилиты diff). Система первоначально был написана для ОС Linux, позже была перенесена и под большинство Unix-систем, Mac OS X, и даже Windows. В Mercurial управление репозиториями выполнятся с помощью консольной утилиты hg.
Как и многие традиционными систем контроля версий, в Mercurial поддерживается следующее:
- полностью децентрализованная работа (основное хранилище кода отсутствует)
- ветвление (одновременно могут существовать несколько веток кода одного проекта, а изменения можно копировать между ними)
- слияние репозиториев (на этом и основывается «распределённость» работы системы).
Кроме того, поддерживается передача и синхронизация данных между репозиториями по протоколам SSH, HTTP/HTTPS, а также при путём упаковки изменений в наборы вручную.
Программа hg имеет компактный интерфейс поэтому Mercurial признан более простой для освоения системой, чем, к примеру Git.
Содержание
Общие сведения
Общую информацию Вы можете получить, перейдя по следующим ссылкам:
Расширенные сведения
С дополнительной информацией об этом понятии Вы можете ознакомиться ниже.
Рабочий процесс
Системой контроля версий Mercurial является децентрализованной т.е. распределенной.
Обычно рабочий процесс проходит следующие шаги:
- На локальном хосте создается новый репозиторий (создание нового репозитория, клонирование существующего и т. п.);
- Файлы из рабочей директории этого репозитория изменяются, добавляются или удаляются;
- Выполняется фиксация (англ. commit) изменений в данном репозитории (в локальном репозитории);
- Копирование и фиксация повторяется необходимое количество раз;
- Если необходимо, то выполняется синхронизация с другими репозиториями на предмет изменений : забираются (англ. pull) наборы изменений других разработчиков и/или выдаются (англ. push) локальные правки.
Таким образом, повседневная работа выполняется в локальном репозитории, и при необходимости результаты своей работы отправляются в один или несколько общих репозиториев. Действия при работе с удаленными репозиториями упрощаются, когда Mercurial настроен на автоматическую отправку изменений при выполнении фиксации в общие репозитории.
Идентификация наборов изменений
- Номер версии (англ. revision)
- Идентификатор набора изменений
- Метки (англ. tags)
- Закладки
- Именованные ветки
Существует и графическая оболочка к hg - TortoiseHg. Она работает как под Windows (интегрируется в файловый менеджер Explorer), так и в Linux (в форме отдельного приложения или с интеграцией в менеджер файлов Gnome/Nautilus). Также есть консольный клиент hgtui, разрабатываемый с использованием cygwin, для Linux и Windows.
Многие среда разработки могут работать с Mercurial:
- Microsoft Visual Studio
- IntelliJ IDEA
- Eclipse
- Qt Creator
- PIDA
- NetBeans
В Emacs работа с Mercurial возможна при помощи универсального пакета VC, входящего в его состав.
В системе Trac заложена экспериментальная поддержка Mercurial.
Также репозитории Mercurial поддерживает проект Redmine.
С помощью расширения Mercurial convert или утилиты Tailor можно конвертировать репозитории других систем контроля версий:
Проекты, использующие Mercurial
Множество opensource-проектов используют Mercurial как основную систему контроля версий, среди них:
|
|
Зеркала на Mercurial для основных репозиториев в других проектах также поддерживаются для совместимости, например это:
- GCC
- GNU Emacs
- Ядро Linux.