Setup and Config
Getting and Creating Projects
Basic Snapshotting
Branching and Merging
Sharing and Updating Projects
Inspection and Comparison
Patching
Debugging
External Systems
Server Admin
Guides
- gitattributes
- Command-line interface conventions
- Everyday Git
- Frequently Asked Questions (FAQ)
- Glossary
- Hooks
- gitignore
- gitmodules
- Revisions
- Submodules
- Tutorial
- Workflows
- All guides...
Administration
Plumbing Commands
- 2.43.2 → 2.54.0 no changes
-
2.43.1
2024-02-09
- 2.35.1 → 2.43.0 no changes
-
2.35.0
2022-01-24
- 2.11.4 → 2.34.8 no changes
-
2.10.5
2017-09-22
-
2.9.5
2017-07-30
- 2.3.10 → 2.8.6 no changes
-
2.2.3
2015-09-04
- 2.1.4 no changes
-
2.0.5
2014-12-17
ОБЗОР
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]