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

НАЗВА

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

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

-u

Перетворити символи підкреслення в назвах тегів та гілок на крапки.

-s <subst>

Замініть символ "/" в іменах гілок на <subst>

-p <options-for-cvsps>

Додаткові опції для cvsps. Опції -u та -A є неявними та не повинні використовуватися тут.

Якщо вам потрібно передати кілька параметрів, розділіть їх комою.

-z <fuzz>

Передайте параметр «timestamp fuzz factor» у функцію 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]