hg convert [ПАРАМЕТР]... ИСТОЧНИК [НАЗН [REVMAP]]
Преобразовать хранилище другой SCM в хранилище Mercurial
Возможные входные форматы [обозначения]:
Возможные выходные форматы [обозначения]:
Если номер ревизии не указан, преобразуются все ревизии. В противном случае будут преобразованы только ревизии, предшествующие указанной. Номер ревизии указывается в формате источника.
Если не указан каталог назначения, то будет использовано имя каталога источника с добавленным окончанием "-hg". Если каталог назначения не существует, он будет создан.
По умолчанию все источники кроме Mercurial преобразуются с параметром --branchsort. Для хранилища Mercurial используется --sourcesort, чтобы сохранить исходный порядок номеров ревизий. Режимы сортировки имеют следующий смысл:
Если файл "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 возможны следующие параметры, которые можно указать в командной строке с помощью "--config":
При конвертировании из CVS используется песочница (т.е. копия, полученная с помощью cvs checkout), которая нужна в качестве отправной точки для конвертации. Прямой доступ к файлам хранилища CVS не требуется, если, конечно, не используется метод доступа ":local:". Хранилище CVS ищется по каталогу верхнего уровня песочницы, после чего используется команда CVS rlog для поиска конвертируемых файлов. Это означает, что если не задан файл filemap, будут конвертироваться все файлы из верхнего каталога, и все изменения структуры каталогов в песочнице будут проигнорированы.
Следующие параметры могут использоваться с "--config":
Дополнительная команда Mercurial "debugcvsps" позволяет запустить встроенный код слияния набора изменений без проведения конвертации. Ее параметры и вывод похожи на cvsps 2.1. Подробней см. справку по cvsps.
В случае Subversion анализируется классическая структура хранилища trunk/branches/tags. По умолчанию заданный URL "svn://хранилище/путь" преобразуется в одну ветку. Если "svn://хранилище/путь/trunk" существует, он заменяет ветку "default". Если "svn://хранилище/путь/branches" существует, его подкаталоги перечисляются как возможные ветки. Если "svn://хранилище/путь/tags" существует, в нем ищутся метки, ссылающиеся на конвертируемые ветки. Значения по умолчанию для "trunk", "branches" и "tags" могут быть изменены нижеперечисленными параметрами. Установите их в пути относительно URL источника или оставьте пустыми чтобы отключить автоматическое определение.
Следующие параметры могут быть заданы в "--config":
История может извлекаться начиная с указанной ревизии, а не обязательно полностью. Поддерживается только преобразования для одной ветки.
При импорте из Perforce (P4) в качестве источника можно задать путь к хранилищу или спецификацию клиента. Все файлы источника будут преобразованы в простое хранилище Mercurial, метки, ветки и точки интеграции игнорируются. Обратите внимание, что при задании пути к хранилищу обычно надо указать также каталог назначения, потому что иначе он может быть назван "...-hg".
Можно ограничить количество конвертируемых записей, указав начальную ревизию Perforce:
Поддерживаются следующие параметры:
параметры:
--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) |
параметры, помеченные [+], могут указываться многократно