博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
svn大仓库拆小仓库迁移保留commit
阅读量:6912 次
发布时间:2019-06-27

本文共 2021 字,大约阅读时间需要 6 分钟。

svn迁git,及增量更新svn迁git仓库 参考https://blog.51cto.com/674564591/2164060

过程:

1.git svn clone --authors-file=/root/author.txt --branches=26prpins backup

2.多少个小仓库cp多少份backup, sh /root/scripts/cp.sh

[root@node64_2 tmp]# cat /root/scripts/cp.sh #!/bin/bashread -p "please enter clone service " clone_serviceread -p "please enter service " service_dirfor i in $service_dirdo     cp -a $clone_service $idone

脚本说明:

1.小仓库cp到root目录下
2.执行脚本前在gitlab创建好项目,获取ssh/http仓库地址
3.在root目录执行此remove_git.sh及cp.sh

[root@node64_2 scripts]# cat remove_git.sh #!/bin/bash#author: fitme#date : 2018/7/10#email : fitme96@gmail.com#scripts describe: 执行脚本传入二级目录,脚本完成大仓库拆分小仓库,并保留commit记录if [ $# -eq 1 ];thenup_level_dir=$1for service_dir in parent registry  #for 语句后面parent改为需要拆分的小仓库名do        exclude_dir=${service_dir}        cd /root/$service_dir        for i in `ls |grep -v "^${up_level_dir}$";ls ${up_level_dir}|grep -v "^${exclude_dir}$"|sed -r s'#(.*)#'${up_level_dir}'/\1#'`        do                git filter-branch --force --index-filter 'git rm --cached -r --ignore-unmatch '$i'' --prune-empty --tag-name-filter cat -- --all   > /dev/null 2>&1    done    git checkout -b dev dev        git checkout -b inttest inttest        git checkout -b prod prod        git checkout -b uat uat        git branch -D master    for branch in prod inttest dev uat        do                git checkout ${branch}                ls|grep -v "^${up_level_dir}$"|xargs rm -r                mv ${up_level_dir}/${exclude_dir}/* ./                rm -rf $up_level_dir                git commit -am "remove dir"                git add .                git commit -am "test commit"        donedoneelse    echo "example: /bin/bash $0 up_level_dir"fi
  • git remote add origin git@gitlab.xxxx.com:CoreProjectNew/business/frontend.git
  • git push origin --froce --all

    清理和回收本地仓库空间

  • du -sh .git/ 查看.git目录大小
  • rm -rf .git/refs/original/
  • git reflog expire --expire=now --all
  • git gc --prune=now
  • git gc --aggressive --prune=now
  • 执行完后确认.git目录文件是否变小

转载于:https://blog.51cto.com/674564591/2164067

你可能感兴趣的文章
jq与原生js实现收起展开效果
查看>>
JS开发中自定义调试信息开关
查看>>
p3302 [SDOI2013]森林(树上主席树+启发式合并)
查看>>
我的 FPGA 学习历程(06)—— 二进制转格雷码
查看>>
书摘<<互联网世界观>>
查看>>
Running Intel® HAXM installer
查看>>
pycharm 不显示代码提示
查看>>
基础数据库脚本12年编写
查看>>
开启新线程
查看>>
AttributeError: 'str' object has no attribute 'decode'
查看>>
MySQL 8.0.11(zip)安装及配置
查看>>
Cocos2d-x之内存管理
查看>>
Sharepoint 列表分页开发
查看>>
当页面是本地页面时,通过ajax访问tomcat里的action,传递的参数在action里并不能识别...
查看>>
设计模式6大原则
查看>>
C# WinForm : 自定义分页控件
查看>>
RocketMQ Java 客户端实现
查看>>
hdu 1133 Buy the Ticket (大数+递推)
查看>>
java:Java里数字转字符串前面自动补0的实现
查看>>
获取图片颜色的rgb,以供css设计背景颜色
查看>>