将项目从RCS迁移到git?

时间:2009-10-25 02:01:08

标签: git migration cvs rcs

我有一个20-year-old project我想从RCS迁移到git,而不会丢失历史记录。所有网页都表明One True Path是通过CVS进行的。但经过一个小时的谷歌搜索和尝试不同的脚本,我还没有找到成功将我的RCS项目树转换为CVS的任何内容。我希望Stackoverflow上的好人能够知道实际上有什么用处,而不是声称可以工作但没有。

(我使用原生SO搜索和Google搜索搜索了Stackoverflow,但如果数据库中有一个有用的答案,我就错过了。)

更新http://git.oblomov.eu/rcs-fast-export上的rcs-fast-export工具已于2009年4月14日修复,此版本似乎对我有用。此工具将直接转换为git,没有中间CVS。谢谢Giuseppe和Jakub !!!


那些我仍然记得不起作用的事情:

  • CVS来源的rcs-to-cvs目录中附带的contrib脚本

  • 2010年4月13日之前版本中http://git.oblomov.eu/rcs-fast-exportrcs-fast-export工具

  • 在名为“CVS-RCS-HOW-TO Document for Linux”的文档中找到的rcs2cvs脚本

5 个答案:

答案 0 :(得分:22)

请参阅Git Wiki上的InterfacesFrontendsAndTools页面,“工具”,“与其他版本控制系统的交互”,“其他”。在这里,您可以找到Giuseppe“Oblomov”Bilotta的 rcs-fast-export gitweb)Ruby脚本的描述和链接。

(网络搜索也会找到Ohloh页面和上述项目的公告)

答案 1 :(得分:1)

作为一般规则,您应该注意您运行的脚本。对于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|
...

答案 2 :(得分:1)

好的,经过一点点的修补,我发现将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_

答案 3 :(得分:0)

我也有这个问题,并与cvs2svn,parsecvs和诸如此类的东西搏斗。 parsecvs离得最近,但基思似乎把它留在后面,现在随机的叉子突然出现了。我遇到的问题是它会解析RCS文件就好了,但它做的最后一件事是git rm文件,所以我不得不用git reset来解除删除。< / p>

然后我发现了mercurial的convert:   https://www.mercurial-scm.org/wiki/ConvertExtension 问题解决了!

我试图从单独的RCS树中逐步添加一些东西,它似乎已经有效了。

答案 4 :(得分:0)

刚发现这个,对我来说很好用:

http://cynic.cc/blog/posts/migrate-from-rcs-to-git/

请注意,该页面上的“cvs-source-dir”必须是绝对路径。