cursor Init 完善多人协同changelog,以及godot相关基础skill和代码规范

This commit is contained in:
Nostars Developer
2026-07-15 14:38:08 +08:00
parent fc8557f2a9
commit 6446261c69
56 changed files with 3523 additions and 1584 deletions

View File

@@ -0,0 +1,82 @@
#!/bin/sh
# merge-import.sh - harvest a not-yet-fragmented branch's changelog into fragments, then rebuild views.
#
# 合并旧格式分支(如 master后用它把对方旧格式 changelog 条目收割成 fragment
# (只补 entries/ 里还没有的 ID绝不覆盖已有 fragment重建四个视图并报告丢失的 ID。
#
# Usage:
# sh .cursor/changelog/tools/merge-import.sh # harvest from working-tree (post union-merge)
# sh .cursor/changelog/tools/merge-import.sh master # harvest directly from a ref
set -e
REF="${1:-}"
export PYTHONIOENCODING=utf-8
ROOT=$(git rev-parse --show-toplevel 2>/dev/null) || { echo "not inside a git repository"; exit 1; }
cd "$ROOT"
CL=".cursor/changelog"
TOOLS="$CL/tools"
if command -v python >/dev/null 2>&1; then PY=python
elif command -v python3 >/dev/null 2>&1; then PY=python3
else echo "python not found"; exit 1; fi
ids_of() {
[ -f "$1" ] || return 0
grep -oE "^### \[(CL-[^]]+)\]" "$1" | sed -E 's/^### \[(CL-[^]]+)\]/\1/' | sort -u
}
VIEWS="changelog-full.md changelog-recent.md changelog-headlines.md"
TMP=$(mktemp -d)
trap 'rm -rf "$TMP"' EXIT
if [ -n "$REF" ]; then
echo "harvest source: ref '$REF'"
for f in $VIEWS; do
git show "$REF:$CL/$f" > "$TMP/$f" 2>/dev/null || true
done
else
echo "harvest source: working-tree (post union-merge)"
for f in $VIEWS; do
[ -f "$CL/$f" ] && cp -f "$CL/$f" "$TMP/$f"
done
fi
SRC_IDS=$(ids_of "$TMP/changelog-full.md")
SRC_COUNT=$(printf '%s\n' "$SRC_IDS" | grep -c . || true)
echo "source entries: $SRC_COUNT"
# parse source into staging fragments (temp/entries/legacy)
"$PY" "$TOOLS/migrate_changelog.py" "$TMP" >/dev/null
# existing fragment ids in the real repo (filename stem == id)
mkdir -p "$CL/entries/legacy"
added=0
if [ -d "$TMP/entries/legacy" ]; then
for frag in "$TMP/entries/legacy"/*.md; do
[ -e "$frag" ] || continue
base=$(basename "$frag")
id="${base%.md}"
if ! find "$CL/entries" -name "$base" | grep -q .; then
cp -f "$frag" "$CL/entries/legacy/$base"
added=$((added+1))
fi
done
fi
echo "new fragments imported: $added"
# rebuild views
"$PY" "$TOOLS/changelog_build.py"
# verify
NOW_IDS=$(ids_of "$CL/changelog-full.md")
missing=$(comm -23 <(printf '%s\n' "$SRC_IDS") <(printf '%s\n' "$NOW_IDS") || true)
if [ -n "$missing" ]; then
echo "WARNING: source ids missing after rebuild:"
printf ' %s\n' $missing
exit 2
fi
NOW_COUNT=$(printf '%s\n' "$NOW_IDS" | grep -c . || true)
echo "OK: all $SRC_COUNT source entries present. total now: $NOW_COUNT."
echo "next: git add -A; git commit"