sync: 自动同步未提交变更 [create TASK-20260323234126]

This commit is contained in:
cfdaily
2026-03-23 23:41:26 +08:00
parent af2a3236db
commit 43e34f7c39
5 changed files with 168 additions and 4 deletions
@@ -86,10 +86,27 @@ while true; do
echo "" >> "$DONE_FILE"
echo "✅ 监控自动发现任务成功,工作流正常" >> "$DONE_FILE"
# 完成任务后删除.task文件
# 解析任务内容,提取要删除的文件(格式:文件名包含在内容中,一行一个)
# 删除当前.task文件
rm "$TASK_FILE"
# 把删除也加入Git
git rm "$TASK_FILE" >> "$LOG_FILE" 2>&1
git rm "$TASK_FILE" >> "$LOG_FILE" >&1
# 提取任务内容中所有要删除的文件(匹配 *.task, *.done, *.md
DELETE_FILES=$(echo "$TASK_FULL_CONTENT" | grep -E '\s+[A-Za-z0-9_/.-]+\.(task|done|md)\s*' | xargs echo)
if [ -n "$DELETE_FILES" ]; then
log_info "[$TIMESTAMP] 🗑️ 需要删除 $DELETE_FILES"
for DEL_FILE in $DELETE_FILES; do
# trim whitespace
DEL_FILE=$(echo "$DEL_FILE" | xargs echo)
if [ -f "$DEL_FILE" ]; then
git rm "$DEL_FILE" >> "$LOG_FILE" 2>&1
log_info "[$TIMESTAMP] ✅ 删除 $DEL_FILE"
else
log_info "[$TIMESTAMP] ⚠️ 文件不存在 $DEL_FILE,跳过"
fi
done
fi
log_info "[$TIMESTAMP] ✅ $AGENT 完成任务: $TASK_ID"
log_info "[$TIMESTAMP] 📝 完成标记已创建: $DONE_FILE"
@@ -97,8 +114,12 @@ while true; do
# 自动推送完成结果
# 添加.done文件和已删除的.task文件
git add "$DONE_FILE" >> "$LOG_FILE" 2>&1
UNCOMMITTED=$(git status --porcelain | grep -E "($DONE_FILE|$TASK_FILE)" || true)
if [ -n "$UNCOMMITTED" ]; then
# 添加所有删除操作
git add . >> "$LOG_FILE" 2>&1
# 检查有没有需要commit的
NEED_COMMIT=$(git status --porcelain | wc -l)
if [ "$NEED_COMMIT" -gt 0 ]; then
log_info "[$TIMESTAMP] 📤 正在推送完成结果..."
git commit -m "auto: $AGENT 完成任务 $TASK_ID" >> "$LOG_FILE" 2>&1
# 先push,如果失败,pull rebase再试一次
@@ -115,6 +136,8 @@ while true; do
else
log_info "[$TIMESTAMP] ✅ 推送成功!任务 $TASK_ID 完全完成"
fi
else
log_info "[$TIMESTAMP] ✅ 没有需要commit的变更,任务完成"
fi
done
else