任务描述
将CVS 服务器上的CVS项目提取到本地,然后转换为git项目。要求保留commit记录
cvs2svn项目地址:https://github.com/mhagger/cvs2svn
使用工具:cvs2svn当中的cvs2git功能
前置条件:
- 拥有CVSROOT整个文件夹的访问权 (存了权限)
- 拥有所有文件,包括 ,v 文件 (重要,包含了所有文件的commit,每个文件都应该有一个对应的 ,v ;即10个文件10个,v)
步骤
- 修改cvs2git-example.options中
run_options.set_project(
r'test-data/main-cvsrepo',
)
# 将test-data/main-cvsrepo改为要转换的文件夹,这里使用的是相对路径
- 导出的文件会在 cvs2git-tmp当中
- git-blob.dat
- git-dump.dat
这两文件包含了commit数据
- 生成这两个文件
cvs2git --option=cvs2git-example.options
- 找到一个空文件夹,初始化git项目 (旧的文件不需要移动过来,确保文件夹是空的)
git init
- 导入git数据(代码、commit记录已经包含在blob和dump中)
cat cvs2git-tmp/git-blob.dat cvs2git-tmp/git-dump.dat | git fast-import// 注意blob优先导入
到这里应该已完成了转换。
注意事项
部分代码使用ascii码编码,转为utf-8可能导致乱码,但是转换仍然可以进行。