Skip to content

Support sync cmd upgrade mono client

路志远请求将support-cmd-sync-upgrade-mono合并到main-jh

What does this MR do and why?

Resolve https://jihulab.com/gitlab-cn/gitlab/-/issues/3205

Gerrit Repo 的两个命令可以升级自己:syncselfupdate。Mono client 继承了这种能力,唯一的不同是对 tag 的校验逻辑。

Gerrit Repo 的升级过程是:

  1. 检查服务端是否有更新的 tag
  2. 如果有,检查该 tag 是否被签字(通过 git tag -v v1.2.3 来校验)
  3. 校验通过后,将本地 Repo Client 仓库(./.repo/repo) 更新至最新的 tag

Mono client 删除上述的步骤 2,我们不再校验 tag 是否被签字,原因是

  1. GitLab 不支持使用 GPG 加密 tags
  2. 极狐 GitLab 的发版流程中,tag 也是未经签字的。我们通过 Protected Tags 限制创建 tags 的权限,从而保证 tag 的可信度。

Screenshots or screen recordings

Screenshots are required for UI changes, and strongly recommended for all other merge requests.

How to set up and validate locally

  1. 安装步骤 完成 Mono client 的安装

  2. 将 Mono client 代码 改到老版本

    $ cd .repo/repo
    $ git reset --hard f04b562748791007fd001851664559e94d4033c6
  3. 手动将当前 MR 的 changes 更新到 ./.repo/repo/mono 脚本中,并且执行 git commit 以假装本地没有临时修改

    $ sed -i "" "s/run_git('tag/# run_git('tag/g"  mono
    $ git add mono && git commit -m 'Temp commit about mono'
    $ cd -
  4. 执行 mono selfupdate,期望 Mono client 更新到最新的 tag

iShot_2023-07-13_02.15.32

MR acceptance checklist

This checklist encourages us to confirm any changes have been analyzed to reduce risks in quality, performance, reliability, security, and maintainability.

路志远 编辑于

合并请求报告

加载中