前文讲述 repo 命令详解,从实践中来理论 又到实践中去。仔细研究会发现,可将重复工作交给 repo 实现,接下来简单讲讲两种场景简单应用。
创新互联建站是专业的洋县网站建设公司,洋县接单;提供网站制作、成都网站设计,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行洋县网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!a) repo 镜像仓变更
b) repo 更新代码仓
Gerrit 管理源码托管服务器难免发生故障,必要时需要数据迁移到另外一台服务器。此时 gitolite 可能需要重构,代码仓路径则会发生变更;重新同步代码时间过长,能否在原基础上切换代码仓? 当然可以。
1.1 镜像仓变更原理每个代码仓通过切换 remote url 方式,可实现同步远程仓变更;从单个仓延拓到全部仓即可弯沉代码仓变更。
git remote set-url origin_name url_name
借助 Gerrit 执行脚本方式,协助完成
repo forall -c xxx.sh
1.2 镜像仓变更示例如果仅仅是代码托管服务区变更或者 gitolite 路径变更,简单编写筛选仓库源名并替换相关 URL 脚本 url_change.sh。
例如原来代码仓路径 git@192.168.17.24:356x-r/xxxx 变更为 git@192.168.14.38:rk356x-r
简单编写脚本 即可实现代码迁移。
#!/bin/bash
# *********************** #
# Author by Sanle
# *********************** #
URLA='git@192.168.17.24:356x-r'
URLB='git@192.168.14.38:rk356x-r'
if echo "$(git remote get-url $(git remote))" | grep -qwi $URLA ; then
remote_path=$(git remote get-url $(git remote) | awk -F $URLA '{print $2 }')
git remote set-url $(git remote) $URLB$remote_path
echo remote set-url $(git remote) $URLB$remote_path
fi
exit 0
启动 repo 执行脚本,等待执行完成即可完成代码仓迁移。
cd 356x-android11
.repo/repo/repo forall -c ~/356x-android11/url-change.sh
2 repo 拉取制定分支更新代码同步时偶尔会出现代码仓遗漏或者代码仓更新不及时,编译时轻则功能缺失;重则编译失败,查找原因费时费力不说,还影响敲键盘的心情。如何快速精准实现代码更新呢? 推荐使用 repo 同步
2.1 编写代码同步脚本以 rk3568 android 为例,同步代码分支名为 demo。
touch repo_sync.sh
chmod +x repo_sync.sh
vi repo_sync.sh
#!/bin/bash
if [ -z "$1" ]; then
rd_branch=("demo")
else
rd_branch=($1)
fi
rd_remote=("aosp" "rk" "rk29")
remote=$(git remote)
echo `pwd`
git fetch $remote
for _remote in ${rd_remote[@]}
do
if [ "$_remote" == "$remote" ]; then
for branch in ${rd_branch[@]}
do
if [ ! -z "$(git branch -r --list $remote/$branch)" ]; then
echo "$remote-->$branch"
if [ -z "$(git branch $branch --contains)" ]; then
git checkout -t $remote/$branch
else
if ! echo "$(git branch | grep '\*')" | grep -qwi "$branch" ; then
git checkout $branch
if [ $? -ne 0 ]; then
exit $?
fi
fi
git pull $remote $branch
fi
fi
done
fi
done
exit 0
2.2 同步所有代码仓单仓执行 repo_sync.sh 可实现代码仓同步制定分支,借助 repo forall 命令将所有代码仓执行一次脚本即可实现代码仓同步。
# 等待完成后,所有仓库同步完成,并切换到 demo 分支
.repo/repo/repo forall -c ~/rk3568-s/repo_sync.sh demo
总结从实践中来,到实践中去。
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧