作为另一次尝试,我正在尝试将 CVS 存储库转换为 GIT。推荐使用cvs-fast-export 。唯一的问题是,我不知道如何实际做到这一点。我已经建好了,但是我该如何调用它呢?这里解释了大量的标志,但这比它的帮助更令人困惑。
有没有关于实际转换过程的简短解释?
该存储库是远程的,我通常通过 SSH 进入。我不确定这个项目的文件夹结构是否正常。大概是这样的:
(在远程服务器上)/somefolder/cvs/anotherfolder/
包含:CVSROOT repo-I-want-clone-name
repo-I-want-to-clone-name 包含一个, 以及其后的Attic所有源代码文件。,v(无 CVSROOT)
CVSROOT 包含Attic, cleanlog.sh, cvsignore, checkoutlist, checkoutlist,v, editinfo, editinfo,v, commmitinfo, loginfo, taginfo 等(这里没有类似文件的源代码)
您需要有 CVS 存储库目录的本地副本(包含带有,v历史日志的所有 RCS 文件)。如果您有 SSH 访问权限,请使用它通过 sftp/rsync/tar 下载文件。如果您只有一个 pserver URL,则需要使用类似的方法cvssuck来生成本地存储库。如果存储库托管在 Source\xc2\xadForge,您可以使用 rsync 下载整个内容。
获得 RCS 文件后,将文件名列表提供给 cvs-fast-export,它将以中间“Git fast-export”格式输出存储库
\ncd ~/cvsfiles\nfind . -name '*,v' | cvs-fast-export [some options] > ~/converted.fe\nRun Code Online (Sandbox Code Playgroud)\n注意:确保包含任何Attic目录,因为它们包含旧提交中存在但最终被“删除”的文件。
(然而,除此之外,不需要额外的元数据文件 \xe2\x80\x93 每个,v文件都是完全独立的,因为它使用与 RCS 相同的单文件历史记录格式。cvs-fast-export 的工作是以某种方式将这些单独的文件历史记录混合到多文件提交中。)
然后,您可以使用(例如分配作者、压缩拆分提交)对转储进行编辑reposurgeon,最后使用以下命令将其导入到 Git 中:
git init ~/result\ncd ~/result\ngit fast-import < ~/converted.fe\nRun Code Online (Sandbox Code Playgroud)\n导入将生成分支和提交,并将更新工作树索引,但显然不会提取工作树文件本身:使用git reset --hard或git checkout -f来执行此操作。
(理论上,相同的“快速导出”转储也可以由各种其他 SCM(例如 Mercurial、Plastic 或 Bzr)导入。)
\n| 归档时间: |
|
| 查看次数: |
5126 次 |
| 最近记录: |