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.35.1 → 2.43.0 no changes
- 2.35.0 01/24/22
概述
git cvsimport [-o <HEAD 分支>] [-h] [-v] [-d <CVSROOT>] [-A <author-conv-file>] [-p <options-for-cvsps>] [-P <文件>] [-C <Git 仓库>] [-z <fuzz>] [-i] [-k] [-u] [-s <subst>] [-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 版本。
警告: 在某些情况下,导入会导致不正确的结果。 请参阅 ISSUES 部分以获取更多参考。
您*绝对不*应该在 git cvsimport 创建的分支上做任何自己的工作。 默认情况下,初始导入会从 CVS 仓库的主分支创建并填充一个 "master" 分支,您可以自由使用该分支;之后,您需要自己 git merge 增量导入或任何 CVS 分支。 建议通过 -r 指定一个命名的远程分支,以分隔和保护导入的分支。
如果你打算建立一个所有开发者都能读写的共享公共仓库,或者如果你想使用 git-cvsserver[1],那么你可能想做一个导入仓库的裸克隆,并将该克隆作为共享仓库。 参见 gitcvs-migration[7]。
选项
- -v
-
Verbosity: 让 cvsimport 报告他正在做什么。
- -d <CVSROOT>
-
CVS 存档的根目录。可以是本地(简单路径)或远程;目前只支持 :local:、:ext: 和 :pserver: 访问方法。如果没有给出,git cvsimport 将尝试从 CVS/Root 中读取。如果没有此类文件,则会检查
CVSROOT
环境变量。 - <CVS-module>
-
要导入的 CVS 模块。相对于 <CVSROOT>。 如果没有给出,/git cvsimport' 会尝试从
CVS/Repository
中读取。 - -C <target-dir>
-
The Git repository to import to. If the directory doesn’t exist, it will be created. Default is the current directory.
- -r <remote>
-
要导入此 CVS 仓库的 Git 远程仓库。 将所有 CVS 分支移至 remotes/<远程仓库>/<分支>,类似于 git clone 默认使用 origin 的方式。
- -o <branch-for-HEAD>
-
如果没有指定远程分支(通过 -r),CVS 中的
HEAD
分支会被导入 Git 仓库中的 origin 分支,因为HEAD
对 Git 已经有了特殊含义。 如果指定了一个远程分支,HEAD
分支就会被命名为 remotes/<远程仓库>/master,以反映 git clone 行为。 如果要导入不同的分支,请使用此选项。使用 -o master 继续导入最初由旧版 cvs2git 工具完成的导入。
- -i
-
仅导入:导入后不执行检出。 该选项可确保工作目录和索引保持不变,如果不存在也不会创建。
- -k
-
杀死关键字:将从 CVS 存档中提取带有 -kk 的文件,以避免出现嘈杂的更改集。强烈建议使用,但默认为关闭,以保持与早期导入树的兼容性。
- -u
-
将标记和分支名称中的下划线转换为点。
- -s <subst>
-
用 <subst> 代替分支名称中的字符"/"
- -p <options-for-cvsps>
-
cvsps 的附加选项。 选项
-u
和 -A 是隐含的,不应在此使用。如果需要传递多个选项,请用逗号分隔。
- -z <fuzz>
-
向 cvsps 传递时间戳模糊因子,单位为秒。如果未设置,cvsps 默认为 300 秒。
- -P <cvsps 输出文件>
-
不调用 cvsps,而是读取提供的 cvsps 输出文件。在调试或在 cvsimport 之外处理 cvsps 时非常有用。
- -m
-
尝试根据提交信息检测合并。该选项将启用默认的 regexes,尝试从提交信息中捕捉源分支名称。
- -M <regex>
-
尝试使用自定义正则表达式根据提交信息检测合并。也可与
-m
搭配使用,启用默认的 regexes。必须转义为正斜杠。正则表达式必须在 $1 中捕获源分支名称。
该选项可多次使用,以提供多个检测 regexes。
- -S <正则表达式>
-
跳过与正则表达式匹配的路径。
- -a
-
cvsimport 默认跳过时间戳少于 10 分钟的提交。
- -L <limit>
-
限制导入的提交次数。针对 cvsimport 泄露内存情况的解决方法。
- -A <作者的 conv 文件>
-
CVS 在编写提交日志时默认使用 Unix 用户名。使用此选项和 author-conv 文件可将 CVS 中记录的姓名映射为作者姓名、电子邮件和可选的时区:
exon=Andreas Ericsson <ae@op5.se> spawn=Simon Pawn <spawn@frog-pond.org> America/Chicago
git cvsimport will make it appear as those authors had their GIT_AUTHOR_NAME and GIT_AUTHOR_EMAIL set properly all along. If a time zone is specified, GIT_AUTHOR_DATE will have the corresponding offset applied.
为方便起见,每次提供 -A 选项时,这些数据都会被保存到
$GIT_DIR/cvs-authors
中,每次运行 git cvsimport 时,都会从同一文件中读取这些数据。如果您打算稍后再用 git cvsexportcommit 将更改导出回 CVS,则不建议使用此功能。
- -R
-
生成一个
$GIT_DIR/cvs-revisions
文件,其中包含从 CVS 版本号到新创建的 Git 提交 ID 的映射。 生成的文件将为导入的每一对(文件名、修订版)包含一行;每行看起来像src/widget.c 1.1 1d862f173cdc7325b6fa6d2ae1cfd61fd1b512b7
如果已存在修订数据,则会将其附加到文件中,以便在进行增量导入时使用。
如果在提交信息、错误跟踪系统、电子邮件归档等中存储了 CVS 版本号,该选项可能会很有用。
- -h
-
打印简短的使用信息并退出。
问题
与时间戳有关的问题:
-
如果 CVS 存储库中提交的时间戳不够稳定,无法用于对提交进行排序,则更改可能会以错误的顺序显示。
-
如果任何文件曾被多次 "cvs import"(如导入多个供应商发布的版本),则 HEAD 包含错误的内容。
-
如果在提交匹配时间窗口内,不同文件的时间戳顺序与修订顺序不一致,提交顺序可能会出错。
与分支机构有关的问题:
-
未提交的分支不会被导入。
-
分支点的所有文件都会添加到分支中,即使从未在 CVS 中添加过。
-
这适用于在创建子分支*之后*添加到源分支的文件:如果之前没有在子分支上提交,这些文件就会在 git 中被错误地添加到子分支上。
与标签有关的问题:
-
不会导入同一修订版上的多个标记。
如果您怀疑要导入的仓库可能存在上述问题,请考虑使用 cvs2git:
-
cvs2git(cvs2svn 的一部分),
http://subversion.apache.org/
GIT
属于 git[1] 文档