Mercurial

Материал из devopswiki
Перейти к: навигация, поиск

Mercurial (в переводе с англ. подвижный, ртутный), также известен как Hg (химический элемент "ртуть" в таблице Менделеева), — это распределённая кросс-платформенная система контроля версий, которая разработана для работы с очень большими репозиториями кода более эффективно. Вся система основывается на консольной программе.

Исходный код Mercurial написан на языке программирования Python, но требовательные к производительности участки разработаны как модули-расширения на языке Си (например, своя версия утилиты diff). Система первоначально был написана для ОС Linux, позже была перенесена и под большинство Unix-систем, Mac OS X, и даже Windows. В Mercurial управление репозиториями выполнятся с помощью консольной утилиты hg.

Как и многие традиционными систем контроля версий, в Mercurial поддерживается следующее:

  • полностью децентрализованная работа (основное хранилище кода отсутствует)
  • ветвление (одновременно могут существовать несколько веток кода одного проекта, а изменения можно копировать между ними)
  • слияние репозиториев (на этом и основывается «распределённость» работы системы).

Кроме того, поддерживается передача и синхронизация данных между репозиториями по протоколам SSH, HTTP/HTTPS, а также при путём упаковки изменений в наборы вручную.

Программа hg имеет компактный интерфейс поэтому Mercurial признан более простой для освоения системой, чем, к примеру Git.

Общие сведения

Общую информацию Вы можете получить, перейдя по следующим ссылкам:

Mercurial в Википедии

Домашняя страница Mercurial

Сборник статей о Mercurial

Расширенные сведения

С дополнительной информацией об этом понятии Вы можете ознакомиться ниже.

Рабочий процесс

Системой контроля версий Mercurial является децентрализованной т.е. распределенной.

Обычно рабочий процесс проходит следующие шаги:

  1. На локальном хосте создается новый репозиторий (создание нового репозитория, клонирование существующего и т. п.);
  2. Файлы из рабочей директории этого репозитория изменяются, добавляются или удаляются;
  3. Выполняется фиксация (англ. commit) изменений в данном репозитории (в локальном репозитории);
  4. Копирование и фиксация повторяется необходимое количество раз;
  5. Если необходимо, то выполняется синхронизация с другими репозиториями на предмет изменений : забираются (англ. pull) наборы изменений других разработчиков и/или выдаются (англ. push) локальные правки.

Таким образом, повседневная работа выполняется в локальном репозитории, и при необходимости результаты своей работы отправляются в один или несколько общих репозиториев. Действия при работе с удаленными репозиториями упрощаются, когда Mercurial настроен на автоматическую отправку изменений при выполнении фиксации в общие репозитории.

Идентификация наборов изменений

  • Номер версии (англ. revision)
  • Идентификатор набора изменений
  • Метки (англ. tags)
  • Закладки
  • Именованные ветки

Существует и графическая оболочка к hg - TortoiseHg. Она работает как под Windows (интегрируется в файловый менеджер Explorer), так и в Linux (в форме отдельного приложения или с интеграцией в менеджер файлов Gnome/Nautilus). Также есть консольный клиент hgtui, разрабатываемый с использованием cygwin, для Linux и Windows.

Многие среда разработки могут работать с Mercurial:

В Emacs работа с Mercurial возможна при помощи универсального пакета VC, входящего в его состав.

В системе Trac заложена экспериментальная поддержка Mercurial.

Также репозитории Mercurial поддерживает проект Redmine.

С помощью расширения Mercurial convert или утилиты Tailor можно конвертировать репозитории других систем контроля версий:

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

Множество opensource-проектов используют Mercurial как основную систему контроля версий, среди них:

  • Mozilla и Mozdev
  • OpenOffice.org
  • OpenJDK
  • Netbeans
  • OpenSolaris
  • ALSA
  • Xen
  • Dovecot
  • MoinMoin
  • XINE
  • wmii и dwm
  • mutt
  • Vim
  • XEmacs
  • NTFS-3G
  • Adium
  • Gajim
  • Go
  • CPython
  • Minecraft Coder Pack

Зеркала на Mercurial для основных репозиториев в других проектах также поддерживаются для совместимости, например это:

  • GCC
  • GNU Emacs
  • Ядро Linux.