我正在开始我的编程职业生涯并需要帮助!从CVS迁移到Git的最简单方法是什么。
答案 0 :(得分:0)
最简单的方法是获取项目的当前状态并将其提交到新的Git存储库。你将失去项目的所有历史,但这是你问过的最简单的方法。
如果您想了解最复杂(最好)的方法,那么首先将您的CVS存储库转换为cvs2svn
的CVS存储库,然后使用svn2git
转换结果git(执行不使用git-svn
进行一次性转换,它不是用于此目的的正确工具。这个名字有很多工具。可能最好的是https://github.com/svn-all-fast-export/svn2git的KDE。要预先分析SVN repo历史记录以构建svn2git的正确规则,您可以从此处使用svneverever:http://blog.hartwork.org/?p=763
答案 1 :(得分:0)
我多次使用cvsimport成功。
我发现它在Git BAsh中不起作用(在Windows上),但在cygwin中运行良好。
我使用以下选项(显然替换用户名,服务器和文件位置):
export CVS_RSH=ssh
git cvsimport -v -d myname@myserver:/path-to-cvsroot -C /cygdrive/c/git-repo -z 300 -R -p -q,-b,HEAD MYCVSPROJ
您可以查看git-cvsimport和cvsps的文档,了解这些选项的用途。
此选项也可以递增工作,因此如果某些用户仍在使用CVS,您仍然可以启动导入过程,然后再重新导入。
导入到原始分支(不要与远程混淆)。
提交将使用CVS的用户名作为user.name和user.email。另一个问题是时代都在格林尼治标准时间。这可以通过以下方法解决:
git filter-branch -f --env-filter 'export GIT_AUTHOR_EMAIL=${GIT_AUTHOR_NAME}@mycompany.com; export GIT_COMMITTER_EMAIL=${GIT_COMMITTER_NAME}@mycompany.com; export GIT_COMMITTER_DATE=$(echo ${GIT_COMMITTER_DATE} | perl -pe "s/ \+0000//"); export GIT_AUTHOR_DATE=$(echo ${GIT_AUTHOR_DATE} | perl -pe "s/ \+0000//");' --tag-name-filter cat -- --all
另一个问题是,所有文件都是可执行的,可能不需要。要解决此问题,请使用此版本的BFG Repo Cleaner,这将使所有文件都不可执行。
有关详细信息,请参阅所有工具/命令的文档。