diff --git a/.gitea/workflows/update_stats_badge.yaml b/.gitea/workflows/update_stats_badge.yaml index b46fd78..f899483 100644 --- a/.gitea/workflows/update_stats_badge.yaml +++ b/.gitea/workflows/update_stats_badge.yaml @@ -220,12 +220,24 @@ jobs: cd "${{ env.REPO_DIR }}" - # 创建孤立分支 + # 创建孤立分支(orphan branch) + # 📝 说明:孤立分支与主分支没有共同的提交历史,适合存储独立的数据 git checkout --orphan ${{ env.BADGE_BRANCH }} - # 清空所有文件 + # 🧹 清空所有文件(但保留 .git 目录) + # ❓ 为什么要删除? + # - stats 分支是独立的数据存储分支,不需要主分支的代码文件 + # - 只需要存储徽章 JSON 文件和统计报告 + # - 保持分支干净,避免混淆 + # + # ✅ 能否复用仓库? + # - 可以!.git 目录包含所有分支的完整信息 + # - 切换到主分支时,主分支的文件会恢复 + # - 各分支独立,互不影响 git rm -rf . 2>/dev/null || true - rm -rf * .* 2>/dev/null || true + + # 安全地删除剩余文件(排除 .git 和 .gitea) + find . -maxdepth 1 ! -name '.' ! -name '..' ! -name '.git' ! -name '.gitea' -exec rm -rf {} + 2>/dev/null || true # 创建初始 README cat > README.md << 'EOF' @@ -275,8 +287,11 @@ jobs: echo "======================================" echo "" - # 返回主分支 + # 🔴 重要:返回主分支,后续统计需要在主分支进行 + echo "🔄 切换回主分支: ${{ github.ref_name }}" git checkout ${{ github.ref_name }} + echo "✓ 已切换回主分支" + echo "" - name: 🔍 检查必需工具 id: check_deps @@ -328,6 +343,17 @@ jobs: cd "${{ env.REPO_DIR }}" + # 🔴 重要:确保在主分支进行统计(不要统计 stats 分支) + echo "🔍 确认当前分支..." + CURRENT_BRANCH=$(git branch --show-current) + if [ "$CURRENT_BRANCH" != "${{ github.ref_name }}" ]; then + echo "⚠️ 当前在分支: $CURRENT_BRANCH,切换到主分支: ${{ github.ref_name }}" + git checkout ${{ github.ref_name }} + else + echo "✓ 已在主分支: $CURRENT_BRANCH" + fi + echo "" + # 构建排除参数 EXCLUDE_PARAMS="" IFS=',' read -ra EXCLUDES <<< "${{ env.EXCLUDE_DIRS }}" @@ -370,6 +396,17 @@ jobs: cd "${{ env.REPO_DIR }}" + # 🔴 重要:确保在主分支进行统计 + echo "🔍 确认当前分支..." + CURRENT_BRANCH=$(git branch --show-current) + if [ "$CURRENT_BRANCH" != "${{ github.ref_name }}" ]; then + echo "⚠️ 当前在分支: $CURRENT_BRANCH,切换到主分支: ${{ github.ref_name }}" + git checkout ${{ github.ref_name }} + else + echo "✓ 已在主分支: $CURRENT_BRANCH" + fi + echo "" + # 创建临时目录 mkdir -p /tmp/lang_stats