#!/bin/bash # 配置 Gerrit 项目权限的脚本 PROJECT_NAME="zhini-im" GERRIT_DIR="/home/renjianbo/gerrit_install/review_site" JAVA_HOME="/usr/lib/jvm/java-11-openjdk-11.0.23.0.9-2.el7_9.x86_64" echo "==========================================" echo "配置 Gerrit 项目权限" echo "==========================================" echo "" cd "$GERRIT_DIR" || exit 1 # 方法 1: 尝试使用 SSH(如果密钥配置正确) echo "方法 1: 尝试使用 SSH 配置..." ssh -p 29418 renjianbo@localhost gerrit set-access "$PROJECT_NAME" -a refs/for/* -g Administrators Label-Code-Review+2 2>/dev/null if [ $? -eq 0 ]; then echo "✅ 通过 SSH 配置成功" exit 0 fi echo "SSH 配置失败,尝试其他方法..." echo "" # 方法 2: 直接编辑配置文件 echo "方法 2: 编辑配置文件..." PROJECT_CONFIG_DIR="$GERRIT_DIR/git/$PROJECT_NAME.git" PROJECT_CONFIG="$PROJECT_CONFIG_DIR/config" if [ ! -d "$PROJECT_CONFIG_DIR" ]; then echo "❌ 项目目录不存在: $PROJECT_CONFIG_DIR" exit 1 fi # 备份配置文件 if [ -f "$PROJECT_CONFIG" ]; then cp "$PROJECT_CONFIG" "$PROJECT_CONFIG.bak.$(date +%Y%m%d_%H%M%S)" echo "✅ 已备份配置文件" fi # 检查是否已有权限配置 if grep -q "refs/for/\*" "$PROJECT_CONFIG" 2>/dev/null; then echo "⚠️ 检测到已有 refs/for/* 权限配置" echo "请手动编辑文件: $PROJECT_CONFIG" echo "" echo "添加以下内容:" echo " [access \"refs/for/*\"]" echo " label-Code-Review = +2 group Administrators" else # 添加权限配置 cat >> "$PROJECT_CONFIG" << 'EOF' [access "refs/for/*"] label-Code-Review = +2 group Administrators EOF echo "✅ 已添加权限配置到配置文件" fi echo "" echo "配置文件位置: $PROJECT_CONFIG" echo "" echo "下一步:" echo "1. 检查配置文件内容是否正确" echo "2. 重启 Gerrit 服务使配置生效:" echo " cd $GERRIT_DIR" echo " JAVA_HOME=$JAVA_HOME bin/gerrit.sh restart" echo "" # 显示配置文件内容 echo "当前配置文件内容(最后 20 行):" tail -20 "$PROJECT_CONFIG"