是否有从CVS到Git的迁移工具?

fre*_*ara 63 migration git cvs version-control

我打算从CVS切换到Git.在SVN的情况下,似乎有cvs2svn.是否有类似的工具可以轻松地从CVS迁移到Git?

Jak*_*ski 32

唯一具有增量导入的工具似乎是git-cvsimport.如果你想从CVS 转换(迁移)到Git,现在似乎在cvs2svn的cvs2git模式上面提到了最好的解决方案.

另请参阅Git wiki上的Interfaces Frontends And Tools页面,其中有关与其他版本控制系统交互的部分.

  • 增量导入和迁移之间有什么区别? (2认同)
  • @ HaroldL.Brown:增量导入意味着您同时使用CVS,迁移正在停止使用CVS并转移到Git(可能借助于`git-cvsserver`). (2认同)

Van*_*uan 17

cvs2git

除了提供的答案之外,这里还有一个关于如何使用cvs2git工具将cvs转换为git的指南.这里,modulename是您要导入的CVS目录的名称.

先决条件

cvs2svn 应该已经安装了package(包括cvs2git命令).

更新:步骤1和2不完全正确 - 在尝试之前,请阅读下面的评论mhagger,cvs2git的维护者

  1. 结帐模块名称

    cvs -d URL co -P modulename
    
    Run Code Online (Sandbox Code Playgroud)
  2. 创建cvs2git所需的空CVSROOT

    mkdir modulename/CVSROOT
    
    Run Code Online (Sandbox Code Playgroud)
  3. http://cvs2svn.tigris.org/svn/cvs2svn/trunk/cvs2git-example.options下载cvs2git.options示例(用户"guest"没有密码)

  4. 编辑cvs2git.options文件.将r'test-data/main-cvsrepos'替换为'modulename'.编辑作者转换.

    # edit this
    run_options.set_project(  r'modulename',
    
    # and this
    author_transforms={
        'jrandom' : ('J. Random', 'jrandom@example.com'),
        'mhagger' : 'Michael Haggerty <mhagger@alum.mit.edu>',
    
    Run Code Online (Sandbox Code Playgroud)
  5. 运行cvs2git来创建git临时文件

    cvs2git  --options=cvs2git.options --fallback-encoding utf-8
    
    Run Code Online (Sandbox Code Playgroud)
  6. 创建git存储库

    mkdir gitrepo && cd gitrepo && git init .
    
    Run Code Online (Sandbox Code Playgroud)
  7. 从cvs2git创建的git temp文件导入

    cat ../cvs2git-tmp/git-{blob,dump}.dat | git fast-import
    
    Run Code Online (Sandbox Code Playgroud)
  8. 结帐工作副本

    git reset --hard
    
    Run Code Online (Sandbox Code Playgroud)

  • 这个答案错了​​!你不能从已检出的存储库工作副本进行`cvs2git`转换!您必须针对存储库本身运行它; 即*已经*包含`CVSROOT`子目录和许多`filename,v`文件的目录.如果您使用的是中央CVS服务器,则您需要的存储库位于服务器上. (14认同)
  • @Vanuan:我是cvs2svn/cvs2git的维护者,我说它不可能*.cvs2git*需要*filesystem访问存储库的完整历史记录; 即,包含所有文件修订的`filename,v`文件.签出的工作副本仅包含项目的单个版本.cvs2svn不知道如何从服务器检索旧版本.因此,这是不可能的.您必须通过运行与上述不同的命令来混淆自己. (12认同)
  • @Vanuan:sourceforge允许您[使用rsync下载CVS存储库](http://sourceforge.net/p/forge/documentation/CVS/#backups).这与检查不同; 它为您提供整个存储库,包括其历史记录.一旦你有了,你可以使用`cvs2git`转换为Git. (4认同)

bdo*_*lan 13

cvs2svn有一个cvs2git模式.


小智 8

如果有人仍然不幸使用CVS,你可以尝试"垃圾":https://github.com/rcls/crap 它很快(只要访问CVS可以很快),支持你在cvs repos中找到的混乱和增量.

  • "废话"是救生员.到目前为止,这是唯一对我有用的东西! (2认同)

ral*_*nja 7

另一种方法是使用git cvsimport*

  • git cvsimport已被破坏,并且会在除了最简单的CVS存储库之外的所有存档上默默地提供不正确的结果.例如,请参阅其文档中的"问题"部分(http://www.kernel.org/pub/software/scm/git/docs/git-cvsimport.html),或运行其单元测试. (13认同)

Dav*_*ith 5

我自己没试过,但是朋友们已经报道了从CVS到SVN,然后从SVN转到Git的成功转换.似乎已经比直接CVS到Git转换更彻底地消除了进行这些相应转换的工具.