Spec-Zone.ru › Git

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/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 и 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API