『 利器篇 』GitLab仓库的迁移
程序员文章站
2022-06-16 08:04:52
...
平时需要做Git仓库的迁移, 主要由两种方案实现 :
- 通过git clone --mirror方式
// 克隆旧项目的镜像
git clone --mirror old.git (old.git 为旧项目的git地址) 会clone 仓库下的所有分支
//进入项目目录
cd old.git
//老项目的地址替换成新项目
git remote set-url --push origin new.git (new.git 为新项目的git地址)
//将镜像推到远程
git push origin master
- 通过移除old仓库的链接
cd existing_repo
git remote rename origin old-origin
git remote add origin ssh://aaa@qq.com:xxx/xxx/1.git
git push -u origin --all
git push -u origin --tags
- 通过特定的需求写的小工具
//old项目的仓库备份到新项目
dir_name="$PWD"
all=`find ${dir_name} -name "*.git"` # 查找所有.git仓库
for i in $all
do
if [ -d $i ]
then
cd $i/
tmp=${i##*/}
echo "#### tmp : $tmp"
git push --mirror ssh://aaa@qq.com/demp/$tmp
# git push --mirror aaa@qq.com_ip:git/$i
cd -
fi
done
//本地迁移特定分支的仓库
BASE_PATH="/tmp"
dir_name="$PWD"
echo "#### dir_name $dir_name"
all=`cat repotmp` //repotmp 存放的需要迁移仓库的路径
for i in $all
do
echo "$i"
mkdir -p $i
cd $i
git clone $BASE_PATH$i // 本地直接克隆
git checkout -b master
cd -
done
GitLab API的方式建立仓库
按照官方提供的API方式创建仓库GitLab API Docs
其中PRIVATE-TOKEN需要User Settings->Access Tokens获取
namespace_id对应的是项目组中的zGroup id
// 建立仓库
info="name=$project&path=$project&wiki_enabled=no&public_jobs=true&public=true&namespace_id=135&default_branch=master&private_token=xxxxxx"
curl -d $info "http://gitlab.xxxxxx/api/v4/projects"
- 特定需求写的小工具
//GitLab上新建avs_client和firmware仓库
projects="fip \
avs_client \
firmware "
for project in $projects
do
info="name=$project&path=$project&wiki_enabled=no&public_jobs=true&public=true&namespace_id=135&default_branch=master&private_token=xxxxx"
curl -d $info "http://gitlab.xxxx.com:xxx/api/v4/projects"
done
参考
- repo库迁移及批量创建gitlab库仓库迁移的使用
- gitlab通过api创建组、项目、成员了解如何使用API创建Group Project
- Linux–shell脚本中截取字符串 了解shell中如何截取字符串
上一篇: springboot:注解