如何在 Git one repo 中转换 CVS 原始存储库?

问题描述

我正在尝试将 CVS 现有存储库转换为 Git 存储库。 存储库在“cvs”主目录下有 2 个目录“modules”,例如: 简历/模块_a cvs/module_b

目前,我正在尝试在以下有用页面上学习 SourceForge 的 3 种方法

https://sourceforge.net/p/forge/documentation/CVS/

  1. 我使用的第一种方法是通过 ssh shell 连接并按照使用“cvs2git”的说明进行操作,但在过程结束时,“导入”过程似乎只导入了“module_a”。

  2. 第二种方法是在本地使用“cvs2git”,但目前似乎无法下载该工具作为tarball的源站点: 我尝试从本网站提供的网址:https://www.mcs.anl.gov/~jacob/cvs2svn/cvs2git.html(不可用站点http://cvs2svn.tigris.org/servlets/ProjectDocumentList

所以我尝试从 SF.NET Shell 下载,但是手动重新组装所有 deps 很痛苦。 此外,该工具似乎可以从 Ubuntu 软件包中获得,但现在 Ububtu WSL 通知我该工具不存在:

    sudo apt-get install cvs2svn
    
    Reading package lists... Done
    Building dependency tree
    Reading state @R_81_4045@ion... Done
    Package cvs2svn is not available,but is referred to by another package.
    This may mean that the package is missing,has been obsoleted,or
    is only available from another source
    
    E: Package 'cvs2svn' has no installation candidate
  1. 所以我尝试使用“git cvsimport”:
    git cvsimport -v -a -k -d ~/cvs -C ~/new-git -A ~/authors.txt MODULE

但是这个工具在处理了它声称的所有 CVS 源之后

cvs rlog: Logging module_a/src/main/resources/res
DONE; creating master branch
fatal: refs/heads/origin: not a valid SHA1
fatal: master: not a valid SHA1
fatal: You are on a branch yet to be born
checkout Failed: 32768

那么,请您帮我找到最实用的方法在本地转换旧的 CVS 存储库吗? 提前致谢。

编辑:在案例 1 中,我按照上面页面链接中的说明进行操作:

ssh -t [email protected] create

mkdir cvs2git-tmp 
cd cvs2git-tmp 
cvs2git --blobfile=blob.dat
--dumpfile=dump.dat \
    --username=FIXME --default-eol=native \
    --encoding=utf8 --encoding=latin1 --fallback-encoding=ascii \
    /home/classic/cvs/PROJECT

cat blob.dat dump.dat | git --git-dir=/home/git/p/PROJECT/code.git fast-import 
rm blob.dat dump.dat

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)