#!/bin/bash set -e # --- 0. 环境与工具准备 --- GOSH_CMD="gosh" # 确保已编译或 alias 到 cargo run BASE_DIR="/tmp/alice_demo_debug" # 隔离 Gosh 配置 export GOSH_CONFIG_PATH="$BASE_DIR/config" # 隔离 SSH 密钥目录 SSH_DIR="$BASE_DIR/ssh_keys" # 模拟仓库目录 REPO_DIR="$BASE_DIR/repos" # 颜色定义 GREEN='\033[0;32m' BLUE='\033[0;34m' YELLOW='\033[1;33m' RED='\033[0;31m' NC='\033[0m' log() { echo -e "\n${BLUE}[STEP]${NC} $1"; } info() { echo -e "${GREEN} ->${NC} $1"; } err() { echo -e "${RED} -> ERROR:${NC} $1"; exit 1; } # === 调试核心函数 === debug_inspect() { echo -e "${YELLOW}--- 🔍 DEBUG INSPECTION ---${NC}" echo -e "${YELLOW}[1. Local Config (.git/config)]${NC}" # 只显示相关的配置 git config --local --list | grep -E "user|include|core.sshCommand|gpg" || echo " (Clean/No local config overrides)" echo -e "${YELLOW}[2. Latest Commit Details]${NC}" # 显示签名、作者、提交者 git log -1 --show-signature --pretty=fuller echo -e "${YELLOW}---------------------------${NC}" } # 检查 Git 版本 GIT_VERSION=$(git --version | awk '{print $3}') info "Git Version: $GIT_VERSION (SSH Signing requires 2.34+)" # --- 1. 清理与沙盒初始化 --- log "Initializing Sandbox at $BASE_DIR..." rm -rf "$BASE_DIR" mkdir -p "$GOSH_CONFIG_PATH" mkdir -p "$SSH_DIR" mkdir -p "$REPO_DIR" # --- 2. 生成隔离的 SSH 密钥对 --- log "Generating isolated SSH keys..." ssh-keygen -t ed25519 -C "alice@contoso.com" -f "$SSH_DIR/id_work" -N "" -q info "Generated Work Key: .../id_work" ssh-keygen -t ed25519 -C "alice@alice.com" -f "$SSH_DIR/id_personal" -N "" -q info "Generated Personal Key: .../id_personal" # --- 3. 使用 Gosh 创建 Profile --- log "Creating Gosh Profiles..." # 3.1 Work Profile $GOSH_CMD -c "Alice Work" "alice@contoso.com" "work" WORK_PROFILE="$GOSH_CONFIG_PATH/profiles/work.gitconfig" cat >> "$WORK_PROFILE" <> "$PERSONAL_PROFILE" <