docs(changelog): 归档历史 CHANGELOG 记录
- 归档 102 条历史记录到 docs/changelog-archive/ - 主文件只保留最近 20 条记录 - 添加自动化归档脚本 scripts/archive-changelog.sh 详细变更: - docs/CHANGELOG.md: 从 122 条精简到 20 条 - docs/changelog-archive/CHANGELOG-archive-2024-2026.md: 历史记录归档 - scripts/archive-changelog.sh: 自动化归档脚本
Showing
3 changed files
with
60 additions
and
0 deletions
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
scripts/archive-changelog.sh
0 → 100755
| 1 | +#!/bin/bash | ||
| 2 | + | ||
| 3 | +# CHANGELOG 归档脚本 | ||
| 4 | +# 当 CHANGELOG.md 超过 20 条记录时,自动归档旧记录 | ||
| 5 | + | ||
| 6 | +CHANGELOG_FILE="docs/CHANGELOG.md" | ||
| 7 | +ARCHIVE_DIR="docs/changelog-archive" | ||
| 8 | +MAX_ENTRIES=20 | ||
| 9 | + | ||
| 10 | +# 检查主文件是否存在 | ||
| 11 | +if [ ! -f "$CHANGELOG_FILE" ]; then | ||
| 12 | + echo "❌ CHANGELOG.md 文件不存在" | ||
| 13 | + exit 1 | ||
| 14 | +fi | ||
| 15 | + | ||
| 16 | +# 创建归档目录 | ||
| 17 | +mkdir -p "$ARCHIVE_DIR" | ||
| 18 | + | ||
| 19 | +# 统计当前记录数 | ||
| 20 | +ENTRY_COUNT=$(grep -c "^## \[" "$CHANGELOG_FILE") | ||
| 21 | + | ||
| 22 | +echo "📊 当前 CHANGELOG.md 记录数: $ENTRY_COUNT" | ||
| 23 | + | ||
| 24 | +# 如果记录数超过阈值,执行归档 | ||
| 25 | +if [ "$ENTRY_COUNT" -gt "$MAX_ENTRIES" ]; then | ||
| 26 | + echo "⚠️ 记录数超过 $MAX_ENTRIES 条,开始归档..." | ||
| 27 | + | ||
| 28 | + # 找到第 (MAX_ENTRIES + 1) 条记录的起始行 | ||
| 29 | + SPLIT_LINE=$(grep -n "^## \[" "$CHANGELOG_FILE" | sed -n "$((MAX_ENTRIES + 1))p" | cut -d: -f1) | ||
| 30 | + | ||
| 31 | + if [ -z "$SPLIT_LINE" ]; then | ||
| 32 | + echo "❌ 无法找到分割点" | ||
| 33 | + exit 1 | ||
| 34 | + fi | ||
| 35 | + | ||
| 36 | + # 生成归档文件名(带日期) | ||
| 37 | + ARCHIVE_FILE="$ARCHIVE_DIR/CHANGELOG-archive-$(date +%Y%m%d).md" | ||
| 38 | + | ||
| 39 | + # 移动旧记录到归档文件 | ||
| 40 | + tail -n +"$SPLIT_LINE" "$CHANGELOG_FILE" > "$ARCHIVE_FILE" | ||
| 41 | + | ||
| 42 | + # 只保留前 MAX_ENTRIES 条记录 | ||
| 43 | + head -n "$((SPLIT_LINE - 1))" "$CHANGELOG_FILE" > "$CHANGELOG_FILE.tmp" | ||
| 44 | + mv "$CHANGELOG_FILE.tmp" "$CHANGELOG_FILE" | ||
| 45 | + | ||
| 46 | + NEW_COUNT=$(grep -c "^## \[" "$CHANGELOG_FILE") | ||
| 47 | + ARCHIVE_COUNT=$(grep -c "^## \[" "$ARCHIVE_FILE") | ||
| 48 | + | ||
| 49 | + echo "✅ 归档完成" | ||
| 50 | + echo " 主文件记录数: $NEW_COUNT" | ||
| 51 | + echo " 归档文件记录数: $ARCHIVE_COUNT" | ||
| 52 | + echo " 归档文件: $ARCHIVE_FILE" | ||
| 53 | + | ||
| 54 | + # 显示文件大小 | ||
| 55 | + echo "" | ||
| 56 | + echo "📏 文件大小:" | ||
| 57 | + ls -lh "$CHANGELOG_FILE" "$ARCHIVE_FILE" | ||
| 58 | +else | ||
| 59 | + echo "✅ 记录数 ($ENTRY_COUNT) 未超过阈值 ($MAX_ENTRIES),无需归档" | ||
| 60 | +fi |
-
Please register or login to post a comment