File size: 3,164 Bytes
14f6b4f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
#!/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 "🎯 自动提交脚本执行完成"