- 1、本文档共11页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于 shell 脚本的 gitsync 同步流程
基于 Shell 脚本的 gitsync 同步流程
新老脚本功能对比:
老脚本,主要实现如下功能 (包含缺陷):
1、 基于单库同步,且没有判断是否需要做更新的动作,本地都会下载、推送代码,且
一次同步只能针对单一目的地;
2、 同步的版本库列表文件,需要用户提供,且表格中版本库和分支是否真实存在无法
做到准确地判断;
3、 服务端批量创建版本库时,只能创建没有包含任何分支的版本库。
总体来说,同步的动作会有比较高的本地和网络资源消耗,会额外增加服务器的负担。
此外,若用户无法准确地提供版本库列表,无形当中也存在做无用功的可能性。
因此,出于诸多考量,结合实际维护中所碰到的问题,结合了老脚本,追加输出,完善
了整个同步流程的脚本。
新脚本,提供以下功能:
1、 无需用户提供版本库列表,只要有 xml 文件,就可生成 repo [branch] 格式的,
且可用于后续脚本的统一列表文件。提供纯文本和 html 两种格式文件;
2、 根据列表文件,检查服务端版本库和分支是否存在;
3、 创建版本库的方式,提供了 git (支持裸、空版本库)和 gerrit 命令 (支持创建指
定分支)两种方式;
4、 同步方式,支持多版本库、多目的地,此外可判断是否需要更新,减少资源消耗;
5、 提供 gerrit 实时同步所需版本库权限设置的脚本,无需在 gerrit web UI 上做任
何操作,同步组、同步权限自动设置。
6、 提供服务端版本库分支备份、删除、还原操作 (基于 Hash)。
Wiki 知识库:
03/mediawiki/index.php/Git_repositories_sync_Scripts
03/mediawiki/index.php/Git_DevOps_scripts
脚本:
### 说明:
1、所有的 Shell 脚本,都表现为一个命令;
2、除了 gitsync、m2-gitsync,其它 Shell 规范的命令都支持参数,以不加参数的方
式运行,即可查看。例 repo_init 或 repo_init --help;
3、参数无先后顺序,命令不支持的参数,或者参数所需要的值未指定,脚本不会执行,
报错退出;
4、调用 gitsync、m2-gitsync 命令同步时,会直接按照脚本文件中设定好的 同步目
的地 和 分支 进行相关同步动作;
5、其余 Shell 规范的脚本,对涉及系统,会改变现有数据的动作,都需要用户确认 (输
入 yes)方可执行,否则脚本不会执行。
脚本链接:95:88/cobbler/repo_mirror/lnamp/repo_sync.tgz
同步效率测试:
同步分支:pixi335-v1.0-dint.conf
同步目的地:成都
版本库数量:308 个
首次同步:是
更新版本库:308 个
并发线程:5 个版本库
同步耗时:170 分钟
同步脚本,计算总耗时,使用 time 命令,或者查看具体的同步日志。
同步分支:pixi3-4.5-4g-v1.0-dint
同步目的地:南京
版本库数量:322 个
首次同步:否
更新版本库:1 个
并发线程:3 个版本库
同步耗时:6 分钟
其它测试中,基本更新量不大的,15 分钟内全部检查同步完成 (实际耗时,跟网络、
服务器负载有关)
脚本执行流程:
- 可选:git pull 拉取 manifest.git 版本库;也可对单一的用户提供的 manifest xml 文
件做操作;
- 必须:执行 repo_info,生成列表 repo [ branch ] 格式的 .
文档评论(0)