repo进阶-创新互联

repo 托管进阶

前文讲述 repo 命令详解,从实践中来理论 又到实践中去。仔细研究会发现,可将重复工作交给 repo 实现,接下来简单讲讲两种场景简单应用。

创新互联建站是专业的洋县网站建设公司,洋县接单;提供网站制作、成都网站设计,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行洋县网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!

文章目录
  • repo 托管进阶
  • repo 操作
  • 1. repo 镜像仓变更
    • 1.1 镜像仓变更原理
    • 1.2 镜像仓变更示例
  • 2 repo 拉取制定分支更新
    • 2.1 编写代码同步脚本
    • 2.2 同步所有代码仓
  • 总结


repo 操作

a) repo 镜像仓变更
b) repo 更新代码仓


1. 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元起,快前往官网查看详情吧


网页名称:repo进阶-创新互联
链接地址:http://csdahua.cn/article/cdpchp.html
扫二维码与项目经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流