hg convert [ПАРАМЕТР]... ИСТОЧНИК [НАЗН [REVMAP]]

Преобразовать хранилище другой SCM в хранилище Mercurial

Возможные входные форматы [обозначения]:

Возможные выходные форматы [обозначения]:

Если номер ревизии не указан, преобразуются все ревизии. В противном случае будут преобразованы только ревизии, предшествующие указанной. Номер ревизии указывается в формате источника.

Если не указан каталог назначения, то будет использовано имя каталога источника с добавленным окончанием "-hg". Если каталог назначения не существует, он будет создан.

По умолчанию все источники кроме Mercurial преобразуются с параметром --branchsort. Для хранилища Mercurial используется --sourcesort, чтобы сохранить исходный порядок номеров ревизий. Режимы сортировки имеют следующий смысл:

--branchsort
по возможности преобразует от родительской к дочерней ревизии, т.е. ветки обычно конвертируются одна за другой. Позволяет генерировать более компактные хранилища.
--datesort
сортирует ревизии по дате. Сконвертированные хранилища имеют правильно выглядящую историю, но часто получаются на порядок больше по сравнению c --branchsort.
--sourcesort
пытается сохранить исходный порядок ревизий. Только для исходных хранилищ Mercurial
--closesort
пытается перенести закрытые ревизии как можно ближе к родительским веткам, только для источников Mercurial.

Если файл "REVMAP" не задан, он будет создан по умолчанию как "<dest>/.hg/shamap". "REVMAP" - это простой текстовый файл который устанавливает соответствие входных и выходных идентификаторов для каждой ревизии в формате:

<входной идентификатор> <выходной идентификатор>

Если файл не существует, он создается автоматически. Он обновляется на каждой копируемой фиксации, так что :hg: "convert" может быть прервано и повторно запущено для копирования новых фиксаций

authormap - это обычный текстовый файл, который позволяет заменить в конечном хранилище имена авторов ревизий из исходного хранилища. Это удобно в случае, когда исходная SCM использует unix-логины в качестве имен авторов (например, CVS). Каждая строка соответствует одному имени. Формат строки:

автор в источнике = автор на выходе

Пустые строки и строки, начинающиеся с "#" игнорируются

Файл filemap позволяет фильтровать и переименовывать файлы и каталоги. Каждая строка может содержать одну из следующих директив:

include путь/к/файлу-или-каталогу
exclude путь/к/файлу-или-каталогу/
rename путь/к/источнику путь/к/назначению

Строки, начинающиеся с "#", являются комментариями. Заданный путь используется, если он совпадает с полным относительным путем к файлу или одним из его родительских каталогов. Директивы "include" и "exclude" применяются для самого длинного из указанных путей, так что порядок строк не важен.

Директива "include" означает, что в выходное хранилище попадет указанный файл или каталог со всеми его файлами и подкаталогами. Если директива "include" отсутствует, по умолчанию конвертируется все. Если присутствует хотя бы одна директива "include", все остальное не конвертируется. Директива "exclude" позволяет игнорировать указанный файл или каталог. Директива "rename" переименовывает файл или каталог при конвертации. Чтобы переместить файл из подкаталога в корень хранилища, используйте "." в качестве пути назначения.

Файл slicemap позволяет добавлять искусственные части в историю, позволяя указать родителя для ревизии. Это полезно, например, если вы хотите привязать две родительские ревизии (parent) к результату слияния в SVN, или связать две несвязанные части истории. Каждая запись содержит ключ, отделенный пробелом от одного или двух параметров, разделяемых запятой:

ключ родитель1, родитель2

Ключ - это идентификатор ревизии в исходном хранилище, чьи родители должны быть изменены (тот же формат, что и в файле .hg/shamap). Параметры являются номерами ревизий (во входном или выходном хранилище), которые используются в качестве новых родителей для данного узла. Например, если ветка "release-1.0" была слита в "trunk", то нужно указать номер ревизии в ветке "trunk" в качестве первого родителя, и номер ревизии из ветки "release-1.0" в качестве второго родителя.

Файл branchmap позволяет переименовать ветку из любого внешнего хранилища. При использовании вместе с splicemap, предоставляет широкие возможности для упорядочивания даже самых запутанных хранилищ и преобразования их в хорошо структурированные хранилище Mercurial. Содержит строки в формате:

исходное_имя_ветки новое_имя_ветки

где "исходное_имя_ветки" - это имя ветки в исходном хранилище "новое_имя_ветки" - имя ветки в выходном хранилище. Пробелы в именах веток не допускаются. Этим можно пользоваться, например, чтобы переместить код с ветки "default" на именованную ветку.

Источник - Mercurial

При конвертации из хранилища Mercurial возможны следующие параметры, которые можно указать в командной строке с помощью "--config":

convert.hg.ignoreerrors
игнорировать ошибки целостности при чтении. Используется для восстановления хранилищ Mercurial c недостающими revlog'ами путем конвертации из хранилища Mercurial и обратно. По умолчанию False.
convert.hg.saverev
сохранять исходный номер ревизии в наборе изменений (изменяет выходные номера ревизий). True или False, по умолчанию False.
convert.hg.revs
набор ревизий (revset), задающий исходные ревизии для конвертации.

Источник - CVS

При конвертировании из CVS используется песочница (т.е. копия, полученная с помощью cvs checkout), которая нужна в качестве отправной точки для конвертации. Прямой доступ к файлам хранилища CVS не требуется, если, конечно, не используется метод доступа ":local:". Хранилище CVS ищется по каталогу верхнего уровня песочницы, после чего используется команда CVS rlog для поиска конвертируемых файлов. Это означает, что если не задан файл filemap, будут конвертироваться все файлы из верхнего каталога, и все изменения структуры каталогов в песочнице будут проигнорированы.

Следующие параметры могут использоваться с "--config":

convert.cvsps.cache
Установите в False чтобы отключить кэширование отдалённого лога, нужно для тестирования и отладки. По умолчанию True.
convert.cvsps.fuzz
задает максимально допустимое время (в секундах) между фиксациями с одинаковыми пользователем и журнальным сообщением в рамках одного набора изменений. Значения по умолчанию может не хватить, если очень большие файлы были сохранены в наборе изменений. По умолчанию 60 сек.
convert.cvsps.mergeto
задает регулярное выражение, на совпадение с которым проверяются журнальные сообщения. При совпадении будет вставлена фиктивная ревизия, сливающая ветку с этим сообщением с указанной в регулярном выражении веткой. Значение по умолчанию: "{{mergetobranch ([-\w]+)}}"
convert.cvsps.mergefrom
задает регулярное выражение, с которым сравниваются комментарии фиксации. Если совпадение найдено, то наиболее поздняя ревизия на ветке, обозначенной в выражении, добавляется в качестве второго родителя набора изменений. По умолчанию "{{mergefrombranch ([-\w]+)}}"
convert.localtimezone
использовать местное время (определяется переменной окружения TZ) для времени/даты набора изменений. По умолчанию False (использовать UTC).
hook.cvslog
задает функцию на Python, которая вызывается после получения журнала CVS. Функции передается список с журнальными записями, она может изменять их, удалять или добавлять новые.
hook.cvschangesets
Задает функцию на Питоне, которая вызывается после того, как будут рассчитаны наборы изменений из журнала CVS. Функции передается список с элементами набора изменений, она может изменять их, удалять или добавлять новые.

Дополнительная команда Mercurial "debugcvsps" позволяет запустить встроенный код слияния набора изменений без проведения конвертации. Ее параметры и вывод похожи на cvsps 2.1. Подробней см. справку по cvsps.

Источник - Subversion

В случае Subversion анализируется классическая структура хранилища trunk/branches/tags. По умолчанию заданный URL "svn://хранилище/путь" преобразуется в одну ветку. Если "svn://хранилище/путь/trunk" существует, он заменяет ветку "default". Если "svn://хранилище/путь/branches" существует, его подкаталоги перечисляются как возможные ветки. Если "svn://хранилище/путь/tags" существует, в нем ищутся метки, ссылающиеся на конвертируемые ветки. Значения по умолчанию для "trunk", "branches" и "tags" могут быть изменены нижеперечисленными параметрами. Установите их в пути относительно URL источника или оставьте пустыми чтобы отключить автоматическое определение.

Следующие параметры могут быть заданы в "--config":

convert.svn.branches
задает каталог, содержащий ветки. По умолчанию "branches".
convert.svn.tags
задает каталог, содержащий метки. По умолчанию"tags".
convert.svn.trunk
задает имя главной ветки (trunk) По умолчанию "trunk".
convert.localtimezone
использовать местное время (определяется переменной окружения TZ) для времени/даты набора изменений. По умолчанию False (использовать UTC).

История может извлекаться начиная с указанной ревизии, а не обязательно полностью. Поддерживается только преобразования для одной ветки.

convert.svn.startrev
задает начальный номер ревизии Subversion. По умолчанию 0.

Источник - Perforce

При импорте из Perforce (P4) в качестве источника можно задать путь к хранилищу или спецификацию клиента. Все файлы источника будут преобразованы в простое хранилище Mercurial, метки, ветки и точки интеграции игнорируются. Обратите внимание, что при задании пути к хранилищу обычно надо указать также каталог назначения, потому что иначе он может быть назван "...-hg".

Можно ограничить количество конвертируемых записей, указав начальную ревизию Perforce:

convert.p4.startrev
задает начальную ревизию Perforce (номер списка изменений Perforce).

Выходное хранилище Mercurial

Поддерживаются следующие параметры:

convert.hg.clonebranches
создавать отдельные хранилища на каждую ветку источника. По умолчанию False.
convert.hg.tagsbranch
имя ветки для помеченных ревизий, по умолчанию "default"
convert.hg.usebranchnames
сохранять имена веток. По умолчанию True.

параметры:

--authors ФАЙЛ файл переназначения имен пользователей (УСТАРЕЛО, используйте --authormap)
-s --source-type ТИП тип хранилища источника
-d --dest-type ТИП тип хранилища назначения
-r --rev РЕВИЗИЯ импортировать до ревизии источника РЕВИЗИЯ
-A --authormap ФАЙЛ переназначить имена пользователей используя этот файл
--filemap ФАЙЛ переназначить имена файлов согласно файлу
--splicemap ФАЙЛ срастить синтезированную историю в заданных точках
--branchmap ФАЙЛ изменить имена веток при конвертации
--branchsort попытаться отсортировать наборы изменений по веткам
--datesort попытаться отсортировать наборы изменений по дате
--sourcesort сохранять порядок ревизий источника
--closesort пытаться переупорядочить закрытые ревизии

глобальные параметры:

-R --repository ХРАНИЛИЩЕ корневой каталог хранилища или имя файла комплекта
--cwd КАТАЛОГ сменить рабочий каталог
-y --noninteractive не спрашивать, на все вопросы автоматически выбирать первый вариант
-q --quiet подавлять вывод
-v --verbose включить дополнительный вывод
--config КОНФИГ [+] задать/переопределить параметр конфигурации (в виде 'секция.параметр=значение')
--debug включить отладочный вывод
--debugger запустить отладчик
--encoding КОДИРОВКА установить кодировку (по умолчанию: UTF-8)
--encodingmode РЕЖИМ установить режим кодировки (по умолчанию: strict)
--traceback всегда печатать трассировку стека при исключении
--time время выполнения команды
--profile профилирование выполнения команды
--version напечатать информацию о версии и выйти
-h --help показать справку и выйти
--hidden учитывать скрытые наборы изменений
--color ТИП когда раскрашивать вывод (логический. always (всегда), auto (автоматически)или never (не раскрашивать)) (по умолчанию: auto)

параметры, помеченные [+], могут указываться многократно