git-zadig 使用文档
git-zadig 是一个具备多仓协同管理能力的 Git 插件,具有多仓库管理、本地代码检查、多仓库提交并创建 Merge Request、汇总代码变更信息、联动 Zadig 工作流做日常迭代验证等相关功能。
目前仅支持 GitLab 。
管理员操作
准备 manifest 配置文件
配置 manifest 文件
manifest 数据结构完全继承自 Google 的 git-repo 工具,格式参考文档 (opens new window)
- 元素 remote 属性 type:非必填,用于指定远端代码仓类型。远端代码仓是 GitLab 时, 指定 <remote type=”gitlab”/>,可自动在变更仓库创建 MR。
- 元素 manifest-url:非必填,指定 manifest 所在仓库地址,用于生成的提交记录链接信息。如果不填则会按照当前 manifest clone 地址自动生成,当地址比较特殊有可能自动生成不准确,这时需要手动指定。
- 元素 record-branch :非必填,指定 manifest-url 仓库中的分支,用于记录多仓提交过程中创建的 MR 信息。需确保配置的分支在 manifest-url 仓库中已存在,并且开放该分支的 push 权限。
配置文件样例:
样例参考:https://github.com/koderover/zadig/tree/main/examples/git-zadig-demo (opens new window)
<manifest>
<record-branch>change-history</record-branch>
<manifest-url>https://gitlab.com/kr-poc/manifest-repo</manifest-url>
<remote name="origin"
fetch="https://gitlab.com/kr-poc"
review="https://gitlab.com"
type="gitlab"/>
<default revision="main"
remote="origin"
sync-j="4" />
<project path="app-1-repo" name="app-1-repo" />
<project path="app-2-repo" name="app-2-repo" />
</manifest>
配置 Zadig 工作流
根据实际情况配置 Zadig 工作流,并添加相应的 Git 触发器,参考文档。
- 构建过程使用 git-zadig 工具同步代码
- 配置触发器
注意
- 触发代码库选择 manifest 文件所在仓库
- 目标分支和 manifest 文件中 record-branch 元素配置保持一致
触发事件选择 Push commits
配置 IM 通知
准备前置检查脚本
- 编写 git hook 脚本并提交到代码仓库中统一管理,参考教程:git hook 教程 (opens new window)
- 例如:https://github.com/koderover/zadig/tree/main/examples/git-hook-demo (opens new window)
工程师操作
下载并安装 git-zadig 工具
- 在 Zadig 上下载适合自己的系统版本 git-zadig 工具,如下图所示。
- 解压后,将 git-zadig 工具放入 PATH 中并添加可执行权限。
使用场景一:多仓提交并触发 Zadig 工作流
具体操作
- 初始化工作目录,并将所有相关 repo 下载本地
git zadig init -u <manifest-url> -b <manifest-branch>
git zadig sync
- 创建 feature 分支,开始编码
git zadig start --all <branch>
- 完成编码后,提交代码并执行 upload 命令
# 本地在各个项目目录下执行
git add .
git commit -m "msg"
# 在 workspace 下执行
git zadig upload
Upload 操作说明
- 填写必要的 MR 标题和描述信息
- 去除需要提交的 commit 前面的注释
实现效果
- Manifest 仓库获取变更汇总,变更代码库 MR 自动创建。
从输出中获取 manifest 仓库的 commit URL,访问 URL,获取多仓库代码提交的汇总信息,包括修改的代码库、feature 分支以及对应的 MR 信息
- 工作流自动触发效果
- IM 通知效果
使用场景二:添加前置检查脚本
- 为单仓/多仓添加前置检查脚本,脚本会自动识别当前工作目录是属于单仓还是多仓,分别进行初始化。
git zadig hook -u <hook-url> -b <hook-branch>
- 在当前项目下进行 git 操作,可以发现 hook 检查已经注入。
- 清理单仓/多仓前置检查脚本,脚本会自动识别当前工作流目录是单仓还是多仓。
git zadig hook -c