Русский ▾ Topics ▾ Latest version ▾ git-cvsimport last updated in 2.43.1

НАЗВАНИЕ

git-cvsimport - Спасение ваших данных из другой СКВ которую люди любят ненавидеть

ОБЗОР

git cvsimport [-o <ветка-для-HEAD>] [-h] [-v] [-d <CVSROOT>]
	      [-A <файл-преобразования-авторов>] [-p <параметры-для-cvsps>] [-P <файл>]
	      [-C <git-репозиторий>] [-z <погрешность>] [-i] [-k] [-u] [-s <подстановка>]
	      [-a] [-m] [-M <регулярное-выражение>] [-S <регулярное-выражение>] [-L <предел-коммитов>]
	      [-r <внешний-репозиторий>] [-R] [<CVS-модуль>]

ОПИСАНИЕ

ПРЕДУПРЕЖДЕНИЕ: git cvsimport использует cvsps версии 2, которая считается устаревшей; он не работает с cvsps версии 3 и новее. Если вы выполняете однократный импорт репозитория CVS, рассмотрите возможность использования cvs2git или cvs-fast-export.

Импортирует репозиторий CVS в Git. Он либо создаст новый репозиторий, либо выполнит инкрементальный импорт в существующий.

Разделение журнала CVS на наборы патчей выполняется cvsps. Требуется по крайней мере версия 2.1.

ПРЕДУПРЕЖДЕНИЕ: в некоторых ситуациях импорт приводит к неверным результатам. Пожалуйста, обратитесь к разделу ПРОБЛЕМЫ для дополнительной информации.

Вам никогда не следует выполнять свою собственную работу над ветками, созданными git cvsimport. По умолчанию начальный импорт создаст и заполнит ветку "master" из основной ветки репозитория CVS, с которой вы можете работать; после этого вам нужно будет самостоятельно выполнять git merge инкрементальных импортов или любых веток CVS. Целесообразно указать именованный внешний репозиторий с помощью -r, чтобы разделить и защитить входящие ветки.

Если вы намерены создать общий общедоступный репозиторий, который все разработчики могут читать/записывать, или если вы хотите использовать git-cvsserver[1], то вам, вероятно, потребуется создать голый клон импортированного репозитория и использовать клон в качестве общего репозитория. См. gitcvs-migration[7].

ПАРАМЕТРЫ

-v

Подробность: позволить cvsimport сообщать о том, что он делает.

-d <CVSROOT>

Корень архива CVS. Может быть локальным (простой путь) или внешним; в настоящее время поддерживаются только методы доступа :local:, :ext: и :pserver:. Если не указан, git cvsimport попытается прочитать его из CVS/Root. Если такого файла не существует, он проверяет переменную среды CVSROOT.

<CVS-модуль>

Модуль CVS, который вы хотите импортировать. Относительно <CVSROOT>. Если не указан, git cvsimport пытается прочитать его из CVS/Repository.

-C <целевой-каталог>

Репозиторий Git для импорта. Если каталог не существует, он будет создан. По умолчанию используется текущий каталог.

-r <внешний-репозиторий>

Внешний репозиторий Git, в который импортируется этот репозиторий CVS. Перемещает все ветки CVS в remotes/<внешний-репозиторий>/<ветка> подобно тому, как git clone по умолчанию использует origin.

-o <ветка-для-HEAD>

Если внешний репозиторий не указан (через -r), ветка HEAD из CVS импортируется в ветку origin в репозитории Git, поскольку HEAD уже имеет особое значение для Git. Когда указан внешний репозиторий, ветка HEAD называется remotes/<внешний-репозиторий>/master, отражая поведение git clone. Используйте этот параметр, если вы хотите импортировать в другую ветку.

Используйте -o master для продолжения импорта, который изначально был выполнен старым инструментом cvs2git.

-i

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

-k

Удалить ключевые слова: будет извлекать файлы с -kk из архива CVS, чтобы избежать шумных наборов изменений. Настоятельно рекомендуется, но отключено по умолчанию для сохранения совместимости с ранними импортированными деревьями.

-u

Преобразовывать подчёркивания в именах меток и веток в точки.

-s <подстановка>

Заменять символ «/» в именах веток на <подстановку>

-p <параметры-для-cvsps>

Дополнительные параметры для cvsps. Параметры -u и -A подразумеваются и не должны использоваться здесь.

Если вам нужно передать несколько параметров, разделите их запятой.

-z <погрешность>

Передать фактор погрешности временных меток в cvsps, в секундах. Если не установлен, cvsps по умолчанию использует 300 секунд.

-P <выходной-файл-cvsps>

Вместо вызова cvsps читает предоставленный выходной файл cvsps. Полезно для отладки или когда cvsps обрабатывается вне cvsimport.

-m

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

-M <регулярное-выражение>

Пытаться обнаруживать слияния на основе сообщения коммита с пользовательским регулярным выражением. Его можно использовать с -m, чтобы также включить регулярные выражения по умолчанию. Вы должны экранировать прямые слеши.

Регулярное выражение должно захватывать имя исходной ветки в $1.

Этот параметр можно использовать несколько раз, чтобы предоставить несколько регулярных выражений для обнаружения.

-S <регулярное-выражение>

Пропускать пути, соответствующие регулярному выражению.

-a

Импортировать все коммиты, включая недавние. cvsimport по умолчанию пропускает коммиты, временная метка которых меньше 10 минут от текущего момента.

-L <предел>

Ограничивает количество импортированных коммитов. Обходной путь для случаев, когда cvsimport вызывает утечку памяти.

-A <файл-преобразования-авторов>

CVS по умолчанию использует имя пользователя Unix при записи своих журналов коммитов. Использование этого параметра и файла преобразования авторов сопоставляет имя, записанное в CVS, с именем автора, адресом электронной почты и необязательным часовым поясом:

	exon=Andreas Ericsson <ae@op5.se>
	spawn=Simon Pawn <spawn@frog-pond.org> America/Chicago

git cvsimport создаст видимость, что у этих авторов всё время были правильно установлены GIT_AUTHOR_NAME и GIT_AUTHOR_EMAIL. Если указан часовой пояс, к GIT_AUTHOR_DATE будет применено соответствующее смещение.

Для удобства эти данные сохраняются в $GIT_DIR/cvs-authors каждый раз, когда указан параметр -A, и читаются из того же файла каждый раз при запуске git cvsimport.

Не рекомендуется использовать эту функцию, если вы намерены позже снова экспортировать изменения обратно в CVS с помощью git cvsexportcommit.

-R

Создаёт файл $GIT_DIR/cvs-revisions, содержащий сопоставление номеров редакций CVS с вновь созданными идентификаторами коммитов Git. Созданный файл будет содержать одну строку для каждой импортированной пары (имя-файла, редакция); каждая строка будет выглядеть как

src/widget.c 1.1 1d862f173cdc7325b6fa6d2ae1cfd61fd1b512b7

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

Этот параметр может быть полезен, если у вас есть номера редакций CVS, хранящиеся в сообщениях коммитов, системах отслеживания ошибок, архивах электронной почты и тому подобном.

-h

Вывести краткое сообщение об использовании и выйти.

ВЫВОД

Если указан -v, сценарий сообщает о том, что он делает.

В противном случае успех обозначается способом Unix, т.е. простым завершением с нулевым статусом выхода.

ПРОБЛЕМЫ

Проблемы, связанные с временными метками:

  • Если временные метки коммитов в репозитории CVS недостаточно стабильны для упорядочивания коммитов, изменения могут отображаться в неправильном порядке.

  • Если какие-либо файлы когда-либо были импортированы с помощью "cvs import" более одного раза (например, импорт более одного релиза поставщика), HEAD содержит неверное содержимое.

  • Если порядок временных меток разных файлов пересекается с порядком редакций в пределах временного окна сопоставления коммитов, порядок коммитов может быть неверным.

Проблемы, связанные с ветками:

  • Ветки, в которых не было сделано ни одного коммита, не импортируются.

  • Все файлы из точки ветвления добавляются в ветку, даже если они никогда не добавлялись в CVS.

  • Это относится к файлам, добавленным в исходную ветку после создания дочерней ветки: если ранее в дочерней ветке не было сделано ни одного коммита, они будут ошибочно добавлены в дочернюю ветку в git.

Проблемы, связанные с метками:

  • Несколько меток на одной редакции не импортируются.

Если вы подозреваете, что любая из этих проблем может относиться к репозиторию, который вы хотите импортировать, рассмотрите возможность использования cvs2git:

  • cvs2git (часть cvs2svn), https://subversion.apache.org/

GIT

Является частью пакета git[1]