43 lines
1.3 KiB
Bash
Executable File
43 lines
1.3 KiB
Bash
Executable File
#!/bin/bash
|
|
# 自动同步脚本 - 供cron定时调用
|
|
# 作用:自动git pull获取新任务,自动git push推送完成结果
|
|
# 使用方法:*/5 * * * * /path/to/management/workflow/scripts/auto_sync.sh your-agent-name >> auto_sync.log 2>&1
|
|
|
|
AGENT_NAME="$1"
|
|
|
|
if [ -z "$AGENT_NAME" ]; then
|
|
echo "❌ 错误:请提供Agent名称"
|
|
echo "用法: $0 <agent-name>"
|
|
exit 1
|
|
fi
|
|
|
|
# 自动检测项目根目录
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
PROJECT_ROOT="$(dirname "$(dirname "$SCRIPT_DIR")")/../.."
|
|
cd "$PROJECT_ROOT" || {
|
|
echo "[$(date)] ❌ 无法进入项目目录: $PROJECT_ROOT"
|
|
exit 1
|
|
}
|
|
|
|
echo "[$(date)] 🔄 开始自动同步 - $AGENT_NAME"
|
|
|
|
# 1. 拉取最新代码获取新任务
|
|
echo "[$(date)] ⬇️ git pull..."
|
|
git pull origin main
|
|
|
|
# 2. 检查是否有.done文件未提交
|
|
DONE_FILES=$(find "management/agents/$AGENT_NAME" -name "*.done" -type f 2>/dev/null)
|
|
UNCOMMITTED=$(git status --porcelain | grep "management/agents/$AGENT_NAME.*\.done" || true)
|
|
|
|
if [ -n "$UNCOMMITTED" ]; then
|
|
echo "[$(date)] 📤 发现未提交的完成结果,正在推送..."
|
|
git add "management/agents/$AGENT_NAME"
|
|
git commit -m "auto: $AGENT_NAME 完成任务自动推送"
|
|
git push origin main
|
|
echo "[$(date)] ✅ 推送完成"
|
|
else
|
|
echo "[$(date)] ✅ 没有需要推送的完成结果"
|
|
fi
|
|
|
|
echo "[$(date)] ✅ 自动同步完成"
|