#!/bin/bash # 自动提交脚本 - 每次修改代码后自动提交 # 设置环境变量防止交互 export CI=true export DEBIAN_FRONTEND=noninteractive export GIT_TERMINAL_PROMPT=0 export GCM_INTERACTIVE=never export HOMEBREW_NO_AUTO_UPDATE=1 export GIT_EDITOR=: export EDITOR=: export VISUAL='' export GIT_SEQUENCE_EDITOR=: GIT_MERGE_AUTOEDIT=no export GIT_PAGER=cat export PAGER=cat export npm_config_yes=true export PIP_NO_INPUT=1 export YARN_ENABLE_IMMUTABLE_INSTALLS=false echo "🔍 检查 Git 状态..." # 检查是否有修改或未跟踪的文件 if [ -n "$(git status --porcelain)" ]; then echo "📝 发现变更,准备提交..." # 添加所有变更 git add . # 获取当前时间作为提交信息的一部分 TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S') # 检查是否有修改的文件 MODIFIED_FILES=$(git diff --name-only --cached HEAD~1 HEAD 2>/dev/null || echo "") # 检查是否有新文件 NEW_FILES=$(git diff --name-only --diff-filter=A --cached HEAD 2>/dev/null || echo "") # 生成智能提交信息 if [ -n "$MODIFIED_FILES" ]; then if echo "$MODIFIED_FILES" | grep -q "Dockerfile"; then COMMIT_TYPE="Dockerfile修复" elif echo "$MODIFIED_FILES" | grep -q "\.py$"; then COMMIT_TYPE="代码更新" elif echo "$MODIFIED_FILES" | grep -q "requirements\.txt"; then COMMIT_TYPE="依赖更新" else COMMIT_TYPE="配置更新" fi elif [ -n "$NEW_FILES" ]; then if echo "$NEW_FILES" | grep -q "auto_repair\|monitor\|error_analyzer"; then COMMIT_TYPE="监控系统开发" elif echo "$NEW_FILES" | grep -q "dashboard\|notification"; then COMMIT_TYPE="用户界面开发" else COMMIT_TYPE="功能开发" fi else COMMIT_TYPE="更新" fi # 统计文件数量 TOTAL_FILES=$(git status --porcelain | wc -l) # 生成提交信息 COMMIT_MSG="${COMMIT_TYPE}: ${TIMESTAMP} 📁 变更文件: ${TOTAL_FILES}个 🔧 修改: $(echo "$MODIFIED_FILES" | wc -w)个 📝 新增: $(echo "$NEW_FILES" | wc -w)个" echo "📝 提交信息: ${COMMIT_MSG}" # 提交变更 git commit -m "${COMMIT_MSG}" # 推送到远程仓库 echo "🚀 推送到远程仓库..." if git push origin main; then echo "✅ 成功推送到 HuggingFace Spaces" # 获取最新提交哈希 LATEST_COMMIT=$(git rev-parse --short HEAD) echo "📋 最新提交: ${LATEST_COMMIT}" # 显示提交详情 echo "" echo "📊 提交详情:" echo " - 提交类型: ${COMMIT_TYPE}" echo " - 时间戳: ${TIMESTAMP}" echo " - 文件数量: ${TOTAL_FILES}" echo " - 提交哈希: ${LATEST_COMMIT}" echo "" echo "🔄 HuggingFace Spaces 将自动构建..." else echo "❌ 推送失败,请检查网络连接或权限" exit 1 fi else echo "✅ 没有检测到变更,无需提交" fi echo "🎯 自动提交脚本执行完成"