git-cvsimport
Имя
git-cvsimport - Восстановление ваших данных из другой системы управления версиями, которую люди любят ненавидеть
Синопсис
git cvsimport [-o <branch-for-HEAD>] [-h] [-v] [-d <CVSROOT>]
[-A <author-conv-file>] [-p <options-for-cvsps>] [-P <file>]
[-C <git-repository>] [-z <fuzz>] [-i] [-k] [-u] [-s <subst>]
[-a] [-m] [-M <regex>] [-S <regex>] [-L <commit-limit>]
[-r <remote>] [-R] [<CVS-module>] Описание
ПРЕДУПРЕЖДЕНИЕ: 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-module>
-
Модуль CVS, который вы хотите импортировать. Относительно <CVSROOT>. Если не указано,
git cvsimportпопытается прочитать его изCVS/Repository. - -C <target-dir>
-
Репозиторий Git, в который импортировать. Если каталог не существует, он будет создан. По умолчанию — текущий каталог.
- -r <remote>
-
Удаленный репозиторий Git, в который импортировать этот репозиторий CVS. Перемещает все ветви CVS в remotes/<remote>/<branch>, аналогично тому, как
git cloneиспользуетoriginпо умолчанию. - -o <branch-for-HEAD>
-
Если удаленный репозиторий не указан (через -r), ветка
HEADиз CVS импортируется в веткуoriginв репозитории Git, поскольку уHEADуже есть специальное значение для Git. При указании удалённого репозитория веткаHEADименуется remotes/<remote>/master, отражая поведениеgit clone. Используйте этот параметр, если вы хотите импортировать в другую ветку.Используйте
-o masterдля продолжения импорта, который изначально выполнялся инструментом cvs2git. - -i
-
Только импорт: не выполнять проверку после импорта. Этот параметр гарантирует, что рабочая область и индекс останутся неизменными и не будут созданы, если они не существуют.
- -k
-
Уничтожить ключевые слова: извлечёт файлы с
-kkиз архива CVS, чтобы избежать шумных наборов изменений. Сильно рекомендуется, но выключено по умолчанию для сохранения совместимости с ранними импортированными деревьями. - -u
-
Преобразовать подчёркивания в именах тегов и ветвей в точки.
- -s <subst>
-
Заменить символ "/" в именах ветвей на <subst>
- -p <options-for-cvsps>
-
Дополнительные параметры для cvsps. Параметры
-uи-Aнеявно присутствуют и здесь не должны использоваться.Если вам нужно передать несколько параметров, разделите их запятой.
- -z <fuzz>
-
Передать коэффициент расплывчатости временной метки в cvsps в секундах. Если не указано, cvsps использует значение по умолчанию 300 с.
- -P <cvsps-output-file>
-
Вместо вызова cvsps, прочитать предоставленный файл вывода cvsps. Полезно для отладки или когда cvsps обрабатывается вне cvsimport.
- -m
-
Попытаться определить слияния на основе сообщения о коммите. Этот параметр включит стандартные регулярные выражения, которые пытаются извлечь имя исходной ветки из сообщения о коммите.
- -M <regex>
-
Попытаться определить слияния на основе сообщения о коммите с пользовательским регулярным выражением. Он может использоваться с
-mдля включения стандартных регулярных выражений также. Слэши необходимо экранировать.Регулярное выражение должно извлекать имя исходной ветки в $1.
Этот параметр можно использовать несколько раз для предоставления нескольких регулярных выражений определения.
- -S <regex>
-
Пропустить пути, соответствующие регулярному выражению.
- -a
-
Импортировать все коммиты, включая недавние. По умолчанию cvsimport пропускает коммиты, у которых временная метка меньше 10 минут назад.
- -L <limit>
-
Ограничить количество импортированных коммитов. Обходной путь для случаев, когда cvsimport утечка памяти.
- -A <author-conv-file>
-
По умолчанию CVS использует имя пользователя Unix при записи своих журналов коммитов. С помощью этого параметра и файла author-conv-file отображается имя, записанное в CVS, на имя автора, адрес электронной почты и (по желанию) часовой пояс:
exon=Andreas Ericsson <ae@op5.se> spawn=Simon Pawn <spawn@frog-pond.org> America/Chicagogit 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 и ID недавно созданных коммитов Git. Сгенерированный файл будет содержать одну строку для каждой пары (имя файла, ревизия), импортированной; каждая строка будет выглядеть следующим образомsrc/widget.c 1.1 1d862f173cdc7325b6fa6d2ae1cfd61fd1b512b7
Данные ревизии добавляются в файл, если он уже существует, для использования при выполнении инкрементальных импортов.
Этот параметр может быть полезен, если у вас есть номера ревизий CVS, хранящиеся в сообщениях коммитов, системах отслеживания ошибок, электронных архивах и т.д.
- -h
-
Вывести краткое сообщение об использовании и завершить работу.
Вывод
Если указан -v, скрипт сообщает о том, что он делает.
В противном случае успешность подтверждается по-unixовски, т.е. простым завершением работы с нулевым кодом выхода.
Проблемы
Проблемы, связанные с временными метками:
-
Если временные метки коммитов в репозитории CVS недостаточно стабильны для упорядочивания коммитов, изменения могут отображаться в неправильном порядке.
-
Если какие-либо файлы когда-либо импортировались в CVS более одного раза (например, импорт более одного выпуска поставщика), HEAD содержит неверный контент.
-
Если порядок временных меток разных файлов пересекает порядок ревизии в окне совпадения времени коммита, порядок коммитов может быть неправильным.
Проблемы, связанные с ветвями:
-
Ветви, в которых не было сделано никаких коммитов, не импортируются.
-
Все файлы из точки ветвления добавляются в ветку, даже если они никогда не добавлялись в CVS.
-
Это относится к файлам, добавленным в исходную ветку после создания дочерней ветки: если ранее не было сделано никаких коммитов в дочерней ветке, они будут ошибочно добавлены в дочернюю ветку в git.
Проблемы, связанные с тегами:
-
Несколько тегов на одной ревизии не импортируются.
Если вы подозреваете, что любая из этих проблем может относиться к репозиторию, который вы хотите импортировать, рассмотрите использование cvs2git:
-
cvs2git (часть cvs2svn),
https://subversion.apache.org/
cvsimport
© 2005–2026 Linus Torvalds and others
Licensed under the GNU General Public License version 2.
https://git-scm.com/docs/git-cvsimport