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:
+6
-1
@@ -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")"
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user