Fix install.sh branch argument being silently overridden by BRANCH env #27
Loading…
Reference in a new issue
No description provided.
Delete branch "feature/23_install_sh_branch_arg"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Closes #23
Диагноз
Симптом «при любом запуске в BRANCH только main» воспроизводится, когда в окружении экспортирована
BRANCH(например,BRANCH=mainиз dotfiles/обёртки): старая строкаBRANCH="${BRANCH:-${1:-$BRANCH_DEFAULT}}"давала приоритет переменной окружения над аргументом — любой переданный аргумент молча игнорировался. Проверено трассировкойbash -x:BRANCH=main bash install.sh feature/mybranch→BRANCH=main.Дополнительный фактор по таймлайну: аргумент-ветка появилась в main в 20:15 (+05) (PR #12,
eeb5e70); установленная в/optкопия обновилась только в 21:05 — запуски до этого всегда ставили main. Теперь установленная копия уже с фиксом, а вопрос «аргумент vs env» закрыт явно.Что сделано
BRANCHenv → 3)main. Аргумент сознательно старше окружения (install.sh <branch>обязан срабатывать даже приBRANCH=mainв окружении).branch-resolution-v1— тесты гоняют его в изоляции через bash, не запуская установщик.BRANCHenv.git ls-remoteперед применением — не тронута (шла раньше fetch/reset/clone).Тесты
Новый
test/installsh.test.js(9 тестов): матрица аргумент/env/дефолт — включая сам баг-сценарий из #23 (BRANCH=main+ аргумент → аргумент выигрывает), env без аргумента,mainкак явный выбор, документация трёх форм вызова, ls-remote до применения,bash -n.Проверка вживую (bash -x):
With BRANCH exported in the environment (e.g. BRANCH=main from a wrapper or dotfiles), the old ${BRANCH:-${1:-main}} resolution made any explicit branch argument a no-op: the installer kept using the env value (issue #23). Resolution priority is now: 1) positional argument, 2) BRANCH env, 3) default main. The block is marked and covered by test/installsh.test.js (arguments/env/priority matrix, marker presence, ls-remote-before-apply, bash -n). Full suite: 43/43.Спасибо, мерж принял — фикс разрешения ветки в
install.shтеперь вmain(merge commit763c6d8).Итог по задаче:
BRANCHenv →main; аргумент больше не молча игнорируется при экспортированномBRANCH.test/installsh.test.js(9 кейсов, включая баг-сценарий из #23) — весь набор 43/43 зелёный.Closes #23), у него стоитdone.Если при живом прогоне что-то поведёт себя не так, как в трассировке из описания — пишите, разберусь.