将CVS迁移到Git并保留历史记录和分支

二话不说,先看代码:
cat run.sh
#!/bin/sh

#rsync -av admin@cvshost::/cvshome/module/ /data/cvs_migration/CVSRepo/module


rm -rf /data/cvs_migration/cvs2git-tmp
mkdir /data/cvs_migration/cvs2git-tmp
/data/cvs_migration/cvs2svn-2.4.0/cvs2git \
    --encoding=gbk\
    --blobfile=/data/cvs_migration/cvs2git-tmp/git-blob.dat \
    --dumpfile=/data/cvs_migration/cvs2git-tmp/git-dump.dat \
    --username=cvs2git \
    /data/cvs_migration/CVSRepo


rm -rf /data/cvs_migration/GitTargetRepository.git
git init /data/cvs_migration/GitTargetRepository.git
cd /data/cvs_migration/GitTargetRepository.git
cat /data/cvs_migration/cvs2git-tmp/git-blob.dat /data/cvs_migration/cvs2git-tmp/git-dump.dat|git fast-import

#以下用来修改目录结构,使某个目录module成为根目录
#git filter-branch --subdirectory-filter module -- --all
#以下用来瘦身
#git reflog expire --expire=now --all && git gc --prune=now --aggressive
#添加远程
#git remote add origin git@gitlab.xpaas.lenovo.com:GitTargetRepository/module.git
#将刚才从cvs中导入并转化的内容以镜像的形式推送所有分支到远程
#git push --mirror

说明:

#rsync这段是为了把cvs仓库中的文件复制过来,这里我用的rsync方式,实际直接把原来服务器上的仓库复制过来就可以了

主要功能是使用了cvs2git这个程序,关于它的介绍请参考: http://cvs2svn.tigris.org/cvs2git.html




相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页