从CVS迁移到GIT

时间:2015-02-24 10:53:40

标签: git cvs

我正在尝试从CVS迁移到git。 在运行git cvsimport命令时,我收到以下错误。

c:\Users\cvsps-2.1.tar\cvsps-2.1\cvsps-2.1>git cvsimport -C -d $CVSROOT
cvs_direct: cvs server too old for cvs_direct
WARNING: Your CVS client version:
[Client: Concurrent Versions System (CVS) 1.11.17 (client/server)]
and/or server version:
[Server: Concurrent Versions System (CVS) 1.11 (client/server)]
are too old to properly support the rlog command.
This command was introduced in 1.11.1.  Cvsps
will use log instead, but PatchSet numbering
may become unstable due to pruned empty
directories.

cvs log: in directory .:
cvs [log aborted]: there is no version here; run 'cvs checkout' first
can't open cvsps.cache for write: No such file or directory
fatal: refs/heads/origin: not a valid SHA1
fatal: master: not a valid SHA1
warning: You do not appear to currently be on a branch.
warning: Forcing checkout of HEAD.
fatal: just how do you expect me to merge 0 trees?
checkout failed: 256

我已经设定的CVSROOT。 由于服务器的cvs版本为1.11,客户端的版本为1.11.17,因此错误即将发生。

任何帮助都将受到高度赞赏。

3 个答案:

答案 0 :(得分:2)

看看cvs-fast-export。 (另请参阅manual page。)制作存储库的副本(只是为了确定)并让cvs-fast-export对其进行处理。

它不需要CVS服务器,但直接在存储库中的RCS文件上工作,如下所示;

cp -Rp repo/ test
cd test
echo RCS >.gitignore
git init
find . | cvs-fast-export -A ~/authormap | git fast-import
git add .
git commit -m "Imported into git."

如果需要从远程存储库获取数据,请使用cvssync。 cvs-fast-import联机帮助页的示例:

cvssync anonymous@cvs.savannah.gnu.org:/sources/groff groff
find groff | cvs-fast-export >groff.fi

答案 1 :(得分:0)

我可以回答问题"如何将CVS迁移到git一次并完成#34; (但无法解释您报告的错误)。

请参阅此SO文章How to import CVS to git scm?和cvsimport命令的Git文档。两者都强烈建议使用cvs2git或parsecvs(而不是git cvsimport)进行一次性迁移。

我试过cvs2git - 从http://cvs2svn.tigris.org/cvs2git.html下载。命令有点毛茸茸但有效。快速启动:

% cvs2svn-2.4.0/cvs2git --blobfile=blob.dat --dumpfile=dump.dat --username=cvs2git /path/to/cvsroot/project/ 
% git init --bare project.git
% cd project.git
% cat ../blob.dat ../dump.dat | git fast-import

答案 2 :(得分:0)

您服务器上的CVS版本已发布上个世纪。这是问题所在!

大约14年前,发布了cvs rlog命令的第一个版本的CVS。这个版本应该可以正常工作,升级早就应该了。

当您想要从CVS中解脱时,我建议您以任何方式获得CVS存储库的正确备份,包括愤怒的电话,并使用任何可用的工具进行转换。

如果没人在听,你可以试试cvssucks,但 非常慢。

cvsps使用git cvsimport命令应能够从您的存储库中获取补丁集合,即使它已经过时了;将它们重新组合在一起会很乏味。