平时需要做Git仓库的迁移, 主要由两种方案实现 :
// 克隆旧项目的镜像 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
cd existing_repo git remote rename origin old-origin git remote add origin ssh://git@gitlab.xxx.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://git@gitlab.xxxx/demp/$tmp # git push --mirror git@your_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
按照官方提供的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
本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。
我来说两句