当前位置: 首页 > news >正文

多地部署Gerrit Replication插件同步异常解决思路及方案(附脚本与CronJob部署)

背景

为了支持多地开发,我司在代码服务器(Gerrit)上使用了Replication插件,进行多地部署同步。
整体结构如下:

  • A地区:主Gerrit服务器
  • B地区:从Gerrit服务器

正常的工作流程是:

  • B地区开发者从从服务器拉取代码。
  • B地区开发者向主服务器推送代码。
  • Replication插件保证主从数据同步。

一开始运行良好,直到某天出现了问题。


问题出现

主Gerrit服务器推送了一个鸿蒙代码仓库,这个仓库非常庞大。
由于Replication插件没有针对同步项目做过滤(默认同步全部仓库),导致:

  • B地区从服务器同步鸿蒙仓库时异常缓慢。
  • B地区开发者频繁反馈:代码未同步更新,拉取到的代码不是最新版本。

翻查 Gerrit 日志,只能看到xxx仓库同步推送任务开始(只要有人推送代码就触发),但没有明确的成功/失败信息,也没有报错。


解决方案1:(不可行)

一开始的应急措施是:

  1. 在A地区停掉Gerrit服务
  2. 手动执行rsync等同步命令,强制推送仓库到B地区,确保两边文件完全一致。
  3. 同步完成后,再重新启动Gerrit服务

问题:

  • 停机时间长:由于宽带上传带宽有限,重新同步全部仓库需要近一个月,生产环境根本不可接受。
  • 操作复杂且高风险:容易同步失败或漏同步。

解决方案2:(可行)

思路调整为:

不全量同步,只强制同步B地区开发者所用到的仓库。

手动推送命令示例

主Gerrit服务器上执行以下命令同步单个仓库:

repository="parent/project.git" 
cd /var/gerrit/git/$repository 
git push --mirror 从Gerrit服务器地址:/home/gerrit/gerrit_site/git/$repository

备注说明:

  • repository 是要同步的仓库路径,例如 parent/project.git
  • cd 进入本地gerrit存储的仓库目录。
  • git push --mirror 将本地仓库完整同步(包括所有分支、标签等)到从Gerrit服务器
  • 注意:–mirror参数意味着源仓库所有的分支、标签、远端设置都会被同步,是最彻底的推送方式。

进阶优化(生成sh批量推送脚本)

  1. 但由于仓库较多,将仓库一个一个推送过去也不现实。
  2. 碰巧我们使用 repo 管理 Git 仓库,那就只需通过 B地区开发者所使用的manifes.xml文件,确认必要仓库。
  3. 自动化推送脚本+定时任务,无需手工操作。

思路:

  • 读取manifest.xml文件(1个或多个)。
  • 提取所有需要同步的project path
  • 根据路径生成对应的git push命令。

Python示例代码

from lxml import etreedef sync_script(xml_files):# 统计仓库用的listpro_list=[

相关文章:

  • 【大语言模型DeepSeek+ChatGPT+GIS+Python】AI大语言模型驱动的地质灾害全流程智能防治:风险评估、易发性分析与灾后重建多技术融合应用
  • Uniapp:设置TabBar
  • 从 Synchron 会议观察 Lustre/Scade 同步语言的演化 (1994 - 2024)
  • Ubuntu实现远程文件传输
  • Qt/C++开发监控GB28181系统/获取设备信息/设备配置参数/通道信息/设备状态
  • IOS 国际化词条 Python3 脚本
  • Python实例题:ebay在线拍卖数据分析
  • C#中winform窗体如何捕获键盘按键事件
  • 处理pdf文件的常用库unstructured和PyPDF2
  • centos上安装python的3.13版本
  • SpringBoot、微服务与AI场景题深度解析
  • 【Unity】使用LitJson保存和读取数据的例子
  • 微信小程序封装选择年月日时分秒组件
  • 基于 STM32 的智慧图书馆智能控制系统设计与实现
  • 什么是缓存?在NGINX中如何配置缓存以提升性能?
  • LSTM预测模型
  • JavaScript性能优化实战:从基础到高级的全面指南
  • MySQL 8.4.4 安全升级指南:从漏洞修复到版本升级全流程解析
  • AWS SQS 队列策略配置指南:常见错误与解决方案
  • Spring计时器StopWatch 统计各个方法执行时间和占比
  • 坚持科技创新引领,赢得未来发展新优势
  • 解密62个“千亿县”:强者恒强,新兴产业助新晋县崛起
  • 中国人民解放军南部战区位南海海域进行例行巡航
  • 万科:一季度营收近380亿元,销售回款率超100%
  • 西班牙葡萄牙电力基本恢复
  • 财政部农业农村司司长吴奇修接受纪律审查和监察调查