HEX
Server: nginx
System: Linux f62c58717270 6.1.0-17-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.69-1 (2023-12-30) x86_64
User: www-data (1000)
PHP: 8.0.30
Disabled: NONE
Upload Files
File: /www/wp-cli/checkout_file.sh
#!/bin/sh

# ================= 配置 =================
ROOT_DIR="/www/sites"
TARGET_FILE="wp-content/plugins/npcard/"
LOG_FILE="/www/wp-cli/git_checkout_vertical_log.txt"

echo "========= START $(date) =========" > "$LOG_FILE"

TOTAL=0
SUCCESS=0
SKIPPED=0
FAILED=0

# ================= 遍历站点 =================
for site in "$ROOT_DIR"/*; do
    [ -d "$site" ] || continue

    TOTAL=$((TOTAL + 1))
    echo "---- Processing: $site ----" >> "$LOG_FILE"

    # 检查 index 目录下是否有 Git 仓库
    CODE_DIR="$site/index"
    if [ ! -d "$CODE_DIR/.git" ]; then
        echo "SKIPPED (no git repo in index)" >> "$LOG_FILE"
        SKIPPED=$((SKIPPED + 1))
        continue
    fi

    cd "$CODE_DIR" || {
        echo "FAILED (cd error)" >> "$LOG_FILE"
        FAILED=$((FAILED + 1))
        continue
    }

    # 判断文件或文件夹是否存在
    if [ ! -f "$TARGET_FILE" ] && [ ! -d "$TARGET_FILE" ]; then
        echo "SKIPPED (no $TARGET_FILE)" >> "$LOG_FILE"
        SKIPPED=$((SKIPPED + 1))
        continue
    fi

    # 执行 checkout
    git checkout "$TARGET_FILE" >> "$LOG_FILE" 2>&1

    git pull >> "$LOG_FILE" 2>&1

    if [ $? -eq 0 ]; then
        echo "SUCCESS" >> "$LOG_FILE"
        SUCCESS=$((SUCCESS + 1))
    else
        echo "FAILED (git error)" >> "$LOG_FILE"
        FAILED=$((FAILED + 1))
    fi

done

# ================= 统计 =================
echo "========= END $(date) =========" >> "$LOG_FILE"
echo "TOTAL: $TOTAL" >> "$LOG_FILE"
echo "SUCCESS: $SUCCESS" >> "$LOG_FILE"
echo "SKIPPED: $SKIPPED" >> "$LOG_FILE"
echo "FAILED: $FAILED" >> "$LOG_FILE"