From 25abf8ea361d320ccf8fd5077165b541e089e5dc Mon Sep 17 00:00:00 2001 From: Alexander Petrov Date: Wed, 2 Sep 2026 18:33:05 +0300 Subject: [PATCH] =?UTF-8?q?SprPoP:=20=D0=B2=20CHANGELOG=20=D0=BA=20=D0=B2?= =?UTF-8?q?=D0=B5=D1=80=D1=81=D0=B8=D0=B8=20=D0=B8=20=D0=B4=D0=B0=D1=82?= =?UTF-8?q?=D0=B5=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=20?= =?UTF-8?q?=D0=BA=D0=BE=D0=BC=D0=BC=D0=B8=D1=82=20=D1=82=D0=B5=D0=B3=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Заголовок записи стал `<имя тега> — <дата> — <коммит>`. Зачем коммит, если есть имя тега: тег можно передвинуть или переименовать, а ревизия, на которой релиз собран, должна оставаться в записи однозначно — по ней билд воспроизводится точно. Заодно это тот же хеш, что зашит в EXE как BUILD_ID и виден на экране About, так что принесённый пользователем скриншот сразу сопоставляется с записью changelog. Берётся именно `*objectname` (дереференс аннотированного тега), а не `objectname`: последний вернул бы хеш самого объекта тега, а не коммита. Команда целиком выписана и в шапке CHANGELOG, и в правиле в CLAUDE.md, чтобы не восстанавливать её каждый раз. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_018T2k4VZrSyERwk6H97Sfi1 --- applications/SprPoP/CHANGELOG.md | 17 ++++++++++++----- applications/SprPoP/CLAUDE.md | 12 ++++++++++-- 2 files changed, 22 insertions(+), 7 deletions(-) diff --git a/applications/SprPoP/CHANGELOG.md b/applications/SprPoP/CHANGELOG.md index be4e7b2..a0cde2d 100644 --- a/applications/SprPoP/CHANGELOG.md +++ b/applications/SprPoP/CHANGELOG.md @@ -1,9 +1,16 @@ # SprPoP — CHANGELOG -Заметные изменения по релизам. **Версия и дата каждой записи берутся из -git** — из аннотированного тега (`git for-each-ref refs/tags`), а не -проставляются руками, поэтому расходиться с историей они не могут. -Заголовок записи = имя тега, дата = дата его создания. +Заметные изменения по релизам. **Версия, дата и коммит каждой записи +берутся из git** — из аннотированного тега, а не проставляются руками, +поэтому расходиться с историей они не могут: + + git for-each-ref \ + --format='%(refname:short) | %(creatordate:short) | %(*objectname:short)' \ + refs/tags/<тег> + +Заголовок записи = `<имя тега> — <дата тега> — <коммит тега>`. Коммит — +дереференс аннотированного тега (`*objectname`), то есть та ревизия, на +которой релиз собран: по ней воспроизводится ровно этот билд. Здесь только то, что видно ИГРОКУ или меняет способ сборки/запуска. Разбор причин живёт в сообщениях коммитов, открытые баги — в @@ -12,7 +19,7 @@ git** — из аннотированного тега (`git for-each-ref refs/t Файл начат с релиза v0.9.6; более ранняя история — в `git log` и в досках задач. -## v0.9.6-hang-sound-button — 2026-09-02 +## v0.9.6-hang-sound-button — 2026-09-02 — `aaa480d` Три бага, найденные в живой игре и проверенные в MAME после исправления. diff --git a/applications/SprPoP/CLAUDE.md b/applications/SprPoP/CLAUDE.md index 86b1b20..ac39351 100644 --- a/applications/SprPoP/CLAUDE.md +++ b/applications/SprPoP/CLAUDE.md @@ -61,11 +61,19 @@ seqtbl, `seg007` mob/loose/падающие объекты, `seg008` отрис Открытые файлы обязаны читаться целиком за раз. **CHANGELOG. Ставишь релизный тег — добавь запись в `CHANGELOG.md`.** -Версия и дата в заголовке берутся ИЗ GIT, руками не проставляются: +Версия, дата И КОММИТ в заголовке берутся ИЗ GIT, руками не +проставляются: - git for-each-ref --format='%(refname:short) | %(creatordate:short)' \ + git for-each-ref \ + --format='%(refname:short) | %(creatordate:short) | %(*objectname:short)' \ refs/tags/<тег> +Заголовок = `<имя тега> — <дата> — <коммит>`. Коммит обязателен: тег +можно передвинуть или переименовать, а ревизия, на которой релиз собран, +должна оставаться в записи однозначно. Берётся именно `*objectname` +(дереференс аннотированного тега), а не `objectname` — последний вернёт +хеш самого объекта тега, а не коммита. + В запись идёт только то, что видно ИГРОКУ или меняет сборку/запуск, — по одному пункту «симптом -> причина одной фразой -> хеш коммита». Полный разбор живёт в сообщении коммита, дублировать его сюда не надо.