是否可以在 Gerrit Code Review 中删除组?可能是一些插件,或者这个动作应该以类似 SQL 的方式“手动”执行(例如 gerrit gsql)?
不幸的是,没有办法使用命令行工具或REST API删除 Gerrit 组。
我有一个从 Gerrit 数据库中删除 Gerrit 组的脚本。
它主要执行以下操作:
1)检查Gerrit中是否存在该组:
if ssh -p 29418 USER@GERRIT-SERVER gerrit ls-groups -q GROUP > /dev/null
then
# GROUP EXIST
else
# GROUP DOESN'T EXIST
fi
Run Code Online (Sandbox Code Playgroud)
2) 检查组是否在任何项目中分配了访问权限:
ssh -p 29418 USER@GERRIT-SERVER gerrit ls-projects --type ALL --has-acl-for GROUP > /tmp/ls-projects
if [[ -s /tmp/ls-projects ]]
then
# GROUP HAS ACCESS RIGHTS ASSIGNED
else
# GROUP DOESN'T HAVE ACCESS RIGHTS ASSIGNED
fi
Run Code Online (Sandbox Code Playgroud)
注意:您首先需要从任何项目访问权限中删除该组。
3)在Gerrit数据库中搜索组id
SELECT group_id FROM account_group_names WHERE name = 'GROUP';
Run Code Online (Sandbox Code Playgroud)
4) 从 Gerrit 数据库中删除组
START TRANSACTION;
DELETE FROM account_group_id WHERE s = 'GROUP-ID';
DELETE FROM account_group_by_id WHERE group_id = 'GROUP-ID';
DELETE FROM account_group_by_id_aud WHERE group_id = 'GROUP-ID';
DELETE FROM account_group_members WHERE group_id = 'GROUP-ID';
DELETE FROM account_group_names WHERE group_id = 'GROUP-ID';
DELETE FROM account_groups WHERE group_id = 'GROUP-ID';
DELETE FROM account_group_members_audit WHERE group_id = 'GROUP-ID';
COMMIT;
Run Code Online (Sandbox Code Playgroud)
更新
此过程不再适用于 Gerrit v3.0.x 及更高版本。
| 归档时间: |
|
| 查看次数: |
3857 次 |
| 最近记录: |