将项目从RCS迁移到git?
我有一个20年的项目 ,我想从RCS迁移到git,而不会失去历史。 所有的网页都build议One True Path是通过CVS。 但经过一个小时的谷歌search和尝试不同的脚本,我还没有find任何成功转换我的RCS项目树到CVS。 我希望在Stackoverflow的好人会知道什么是实际工作,而不是声称工作,而不是。
(我searchStackoverflow使用本机SOsearch和谷歌search,但如果有一个有用的答案在数据库中,我错过了。)
更新 : http : rcs-fast-export
工具于2009年4月14日被修复,这个版本似乎适用于我。 这个工具直接转换成git,没有中间的CVS。 感谢Giuseppe和Jakub!
那些我还记得没用的东西:
-
CVS源
contrib
目录中的rcs-to-cvs
脚本 -
在2010年4月13日以前的版本中, http :
rcs-fast-export
工具 -
在一个名为“Linux的CVS-
rcs2cvs
-HOW-TO文档”的文档中find了rcs2cvs
脚本,
请参阅Git Wiki上的InterfacesFronttendsAndTools页面,位于“工具”,“与其他版本控制系统的交互”,“其他”。 在那里你可以find一个描述和链接到rcs-fast-export ( gitweb )Ruby脚本,由Giuseppe“Oblomov”Bilotta完成。
(网页search也可以findOhloh页面和通知提到的项目) 。
作为一般规则,您应该小心运行哪些脚本。 对于RCS – > GIT,遵循RCS-> CVS-> GIT方法可能是最符合您的利益的。
从2011-01-12快速浏览了rcs-fast-export.rb,并运行了这部分代码。 这充其量是可怕的。
# steal username/email data from other init files that may contain the # information def steal_username [ # the user's .hgrc file for a username field ['~/.hgrc', /^\s*username\s*=\s*(["'])?(.*)\1$/, 2], # the user's .(g)vimrc for a changelog_username setting ['~/.vimrc', /changelog_username\s*=\s*(["'])?(.*)\1$/, 2], ['~/.gvimrc', /changelog_username\s*=\s*(["'])?(.*)\1$/, 2], [] ].each do |fn, rx, idx| ...
刚发现这个,对我来说工作得很好:
http://cynic.cc/blog/posts/migrate-from-rcs-to-git/
请注意,该页面上的“cvs-source-dir”需要是绝对path。
好了,经过一番修改,我发现将RCS转换为CVS是微不足道的。 这些文件的格式相同,所以只需将文件移动到现有的CVS根目录即可。 这假定您有权访问RCS文件。
# Create CVS root dir. You only need to do this once. mkdir $HOME/cvs/ cd $HOME/cvs/ cvs init # Import a repository from RCS to CVS cp -a _projectname_/RCS $HOME/cvs/_projectname_
我也有这个问题,并与cvs2svn,parsecvs和whatnot搏斗。 parsecvs得到了最接近,但基思似乎已经离开了它,现在随机叉子popup。 我碰到的问题是,它会parsingRCS文件,但它做的最后一件事是git rm
文件,所以我将不得不使用git reset
来消除删除。
然后我发现mercurial的convert
: https : //www.mercurial-scm.org/wiki/ConvertExtension问题解决了!
我试图从单独的RCS树中逐步添加一些东西,它似乎工作。