українська мова ▾ Topics ▾ Latest version ▾ git-cvsimport last updated in 2.43.1

НАЗВА

git-cvsimport - Врятуйте свої дані з чергового SCM, якого люди так люблять ненавидіти

СИНОПСИС

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/<віддалений>/<гілка>, подібно до того, як «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

Ключові слова Kill: витягне файли з параметром -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 зіставляє ім’я, записане в 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 більше одного разу (наприклад, імпорт релізів кількох постачальників), то HEAD містить неправильний вміст.

  • Якщо порядок позначок часу різних файлів перетинає порядок редагувань у межах часового вікна відповідності комітів, порядок комітів може бути неправильним.

Проблеми, пов’язані з філіями:

  • Гілки, на яких не було зроблено жодних комітів, не імпортуються.

  • Усі файли з точки розгалуження додаються до гілки, навіть якщо вони ніколи не додавались у CVS.

  • Це стосується файлів, доданих до вихідної гілки після створення дочірньої гілки: якщо раніше на дочірній гілці не було зроблено жодного коміту, вони будуть помилково додані до дочірньої гілки в git.

Проблеми, пов’язані з тегами:

  • Кілька тегів в одній редакції не імпортуються.

Якщо ви підозрюєте, що будь-яка з цих проблем може стосуватися репозиторію, який ви хочете імпортувати, розгляньте можливість використання cvs2git:

  • cvs2git (part of cvs2svn), https://subversion.apache.org/

GIT

Частина набору git[1]