File size: 2,673 Bytes
dcc24f8
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
#!/bin/bash
# ============================================
# Git Auto-Commit Scheduler
# Commits changes daily to maintain activity
# ============================================

# Configuration
PROJECT_DIR="$HOME/llm-mail-trainer"
LOG_DIR="$PROJECT_DIR/scheduler_logs"
LOG_FILE="$LOG_DIR/commits.log"
REMOTE="hf"  # HuggingFace remote

# Create log directory
mkdir -p "$LOG_DIR"

# Function to log with timestamp
log() {
    echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" | tee -a "$LOG_FILE"
}

# Function to get random commit message
get_commit_message() {
    local messages=(
        "chore: Update project files"
        "docs: Minor documentation updates"
        "refactor: Code cleanup"
        "style: Format improvements"
        "chore: Regular maintenance"
        "docs: Improve comments"
        "chore: Sync changes"
        "refactor: Minor optimizations"
    )
    local idx=$((RANDOM % ${#messages[@]}))
    echo "${messages[$idx]}"
}

# Main function
main() {
    log "=== Starting auto-commit scheduler ==="
    
    cd "$PROJECT_DIR" || {
        log "ERROR: Cannot access $PROJECT_DIR"
        exit 1
    }
    
    # Check for changes
    if git diff --quiet && git diff --cached --quiet; then
        log "No changes to commit"
        
        # Optional: Create a small update to ensure commit
        # Uncomment if you want to force daily commits
        # echo "# Last updated: $(date)" >> .project-meta
        # git add .project-meta
    else
        log "Changes detected, preparing commit..."
    fi
    
    # Stage all changes
    git add -A
    
    # Check again after staging
    if git diff --cached --quiet; then
        log "Nothing staged to commit"
        exit 0
    fi
    
    # Get current branch
    BRANCH=$(git branch --show-current)
    log "Current branch: $BRANCH"
    
    # Commit with random message
    COMMIT_MSG=$(get_commit_message)
    git commit -m "$COMMIT_MSG" >> "$LOG_FILE" 2>&1
    
    if [ $? -eq 0 ]; then
        log "✅ Committed: $COMMIT_MSG"
        
        # Push to remote
        git push "$REMOTE" "$BRANCH" >> "$LOG_FILE" 2>&1
        
        if [ $? -eq 0 ]; then
            log "✅ Pushed to $REMOTE/$BRANCH"
            
            # Sync model files to ensure they're always present
            log "🔄 Syncing model files..."
            cd "$PROJECT_DIR"
            source venv/bin/activate 2>/dev/null
            python scripts/sync_models.py >> "$LOG_FILE" 2>&1
            log "✅ Model sync complete"
        else
            log "❌ Push failed"
        fi
    else
        log "❌ Commit failed"
    fi
    
    log "=== Scheduler complete ==="
}

# Run main function
main