linux svn仓库迁移,svn大仓库拆小仓库迁移保留commit

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

过程:

1.git svn clone http://10.6.60.40/svn/XXXX/SourceCode --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/bash

read -p "please enter clone service " clone_service

read -p "please enter service " service_dir

for i in $service_dir

do

cp -a $clone_service $i

done

脚本说明:

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 ];then

up_level_dir=$1

for 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"

done

done

else

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目录文件是否变小

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值