#!/bin/bash # 极简分配脚本 - 带git容错处理 # 改进逻辑:每次分配前自动commit所有现有变更,避免unstaged changes问题 if [ $# -lt 2 ]; then echo "使用方法: ./assign_simple.sh <任务ID> <负责人>" echo "例如: ./assign_simple.sh TASK-20260322175034 pangtong" exit 1 fi TASK_ID="$1" AGENT="$2" PENDING_FILE="management/tasks/pending/${TASK_ID}.md" ASSIGNED_FILE="management/tasks/assigned/${TASK_ID}.md" AGENT_FILE="management/agents/${AGENT}/${TASK_ID}.task" # 检查任务文件是否存在 if [ ! -f "$PENDING_FILE" ]; then echo "❌ 错误:任务文件不存在 $PENDING_FILE" exit 1 fi # 确保Agent目录存在 mkdir -p "management/agents/${AGENT}" mkdir -p management/tasks/assigned # 复制任务文件 cp "$PENDING_FILE" "$ASSIGNED_FILE" # 更新状态 sed -i '' "s/# 状态: pending/# 状态: assigned/" "$ASSIGNED_FILE" sed -i '' "s/# 负责人:.*/# 负责人: $AGENT/" "$ASSIGNED_FILE" # 创建.task文件通知Agent cp "$PENDING_FILE" "$AGENT_FILE" # Git处理,带容错 # 改进:每次分配前自动commit所有现有变更,解决批量分配时的unstaged changes问题 echo "🔄 正在同步现有变更..." git add . > /dev/null 2>&1 # 如果有变更就commit,失败(nothing to commit)也继续往下走 git commit -m "sync: 自动同步未提交变更 [assign $TASK_ID to $AGENT]" > /dev/null 2>&1 # commit失败不退出 echo "🔄 正在拉取最新代码..." git pull origin main if [ $? -ne 0 ]; then echo "⚠️ git pull 失败,请先解决冲突后再试" exit 1 fi git add "$PENDING_FILE" "$ASSIGNED_FILE" "$AGENT_FILE" # commit失败也继续往下走 git commit -m "feat: 分配任务 $TASK_ID 给 $AGENT" > /dev/null 2>&1 # commit失败不退出 git push origin main if [ $? -ne 0 ]; then echo "⚠️ git push 失败" exit 1 fi echo "✅ 任务已分配给 $AGENT" echo "📄 任务文件: $ASSIGNED_FILE" echo "📬 通知文件: $AGENT_FILE" echo "🌐 已推送到 Gitee"