fix(install): backup_file mv→cp -a, install --activate-hooks больше не падает
gx10 fail при первой установке (фото юзера 2026-05-18): jq: error: Could not open file /home/keisei/.claude/settings.json [error] jq-merge produced invalid output; ... unchanged [error] install failed at line 126; rolled back Root cause: backup_file() (install/lib-backup.sh:56) делал `mv target backup`, затем activate_hooks() → _jq_merge_hooks() пыталась читать оригинал target'а через jq — но оригинал уже унесён mv'ом, открыть нечего. jq fail → rollback всей установки. Fix: cp -a вместо mv (как уже сделано в backup_path() для директорий). Атомарный безопасный бэкап; оригинал остаётся для jq, потом _jq_merge_hooks атомарно переписывает его mv tmp → target.
This commit is contained in:
parent
c4e43f3637
commit
7bcda396fd
1 changed files with 4 additions and 1 deletions
|
|
@ -57,7 +57,10 @@ backup_file() {
|
|||
local target="$1"
|
||||
[ -f "$target" ] || return 0
|
||||
local backup="${target}.bak-$(date +%s)"
|
||||
mv "$target" "$backup"
|
||||
# cp -a, НЕ mv — _jq_merge_hooks ниже читает оригинал target'а после
|
||||
# backup_file. С mv оригинал исчезает → jq не может open file →
|
||||
# «invalid output» → rollback (gx10 fail 2026-05-18).
|
||||
cp -a "$target" "$backup"
|
||||
BACKUP_PAIRS+=("$target|$backup")
|
||||
say "backed up existing $target to $backup"
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue