release.sh: переставлять split-ветки принудительно

git subtree split -b отказывается двигать существующую ветку, если новый
коммит ей не потомок — после reset в ядре ветка молча оставалась старой,
и продукт тянул устаревшую половину. Ветки производные, поэтому branch -f.

Поймано doctor'ом: сверка поддерева с ядром показала расхождение серверной
половины при совпадающей браузерной.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019LeBkZLiQrvdECf5nfgiMz
This commit is contained in:
2026-08-26 20:45:08 +03:00
co-authored by Claude Opus 5
parent 0c7fee73a6
commit 7977ea6738
3 changed files with 76 additions and 21 deletions
+6 -1
View File
@@ -31,9 +31,14 @@ if [ -n "$(git status --porcelain)" ]; then
exit 1
fi
# `git subtree split -b <ветка>` умеет только создать ветку и отказывается
# двигать существующую, если новый коммит ей не потомок, — а после любого
# reset/rebase в ядре это ровно так. Поэтому split считает коммит, а ветка
# переставляется принудительно: ветки производные, своей истории у них нет.
split() { # split <каталог> <ветка>
printf 'release: %s → %s\n' "$1" "$2"
git subtree split --prefix="$1" -b "$2" -q
rev=$(git subtree split --prefix="$1" -q)
git branch -f "$2" "$rev"
printf ' %s\n' "$(git log -1 --format='%h %s' "$2")"
}