chore(ops): выставить +x на docker-prune.sh и restore.sh #2889

Merged
lekss361 merged 1 commit from chore/ops-scripts-exec-bit into main 2026-08-15 14:19:08 +00:00
Owner

Проблема

Хвост от #2887/#2888, замеченный при проверке прода после деплоя.

ops/docker-prune.sh и ops/restore.sh закоммичены как 100644, хотя соседи по каталогу — 100755:

100755 ops/backup.sh
100644 ops/docker-prune.sh   <-
100644 ops/restore.sh        <-
100755 ops/uptime-healthcheck.sh

На VM оба файла лежат с +x, поэтому git status в /opt/gendesign показывает их как изменённые постоянно:

$ ssh gendesign 'cd /opt/gendesign && git status --short && git diff ops/docker-prune.sh'
 M ops/docker-prune.sh
 M ops/restore.sh
diff --git a/ops/docker-prune.sh b/ops/docker-prune.sh
old mode 100644
new mode 100755

Контент идентичен — 1 file changed, 0 insertions(+), 0 deletions(-), разница только в бите.

Почему это стоит починить

Функционально ничего не ломается: cron зовёт bash /opt/gendesign/ops/docker-prune.sh, restore.sh запускают руками так же, — бит не участвует. У restore.sh этот перекос живёт давно.

Чинить стоит не ради бита, а ради сигнала. git status на проде — единственный дешёвый способ увидеть, что файл правили руками мимо пайплайна. Пока в нём висят две вечные строки, шум становится фоном, и на его месте перестаёшь замечать настоящую правку.

Что сделано

git update-index --chmod=+x на оба файла — режим приведён к тому, что реально на диске и что уже стоит у соседних скриптов. Изменений контента нет, diff состоит только из смены mode.

Test plan

  • git ls-files -s ops/ — оба теперь 100755, в одном ряду с backup.sh и uptime-healthcheck.sh
  • после деплоя — git status --short в /opt/gendesign по этим двум файлам чистый

Деплой на этот PR не сработает: ops/restore.sh не входит в paths: deploy.yml, а ops/docker-prune.sh попал туда только что (#2888). Режим доедет со следующим деплоем от любого другого изменения — торопиться некуда, на работу скриптов это не влияет.

## Проблема Хвост от #2887/#2888, замеченный при проверке прода после деплоя. `ops/docker-prune.sh` и `ops/restore.sh` закоммичены как `100644`, хотя соседи по каталогу — `100755`: ``` 100755 ops/backup.sh 100644 ops/docker-prune.sh <- 100644 ops/restore.sh <- 100755 ops/uptime-healthcheck.sh ``` На VM оба файла лежат с `+x`, поэтому `git status` в `/opt/gendesign` показывает их как изменённые **постоянно**: ``` $ ssh gendesign 'cd /opt/gendesign && git status --short && git diff ops/docker-prune.sh' M ops/docker-prune.sh M ops/restore.sh diff --git a/ops/docker-prune.sh b/ops/docker-prune.sh old mode 100644 new mode 100755 ``` Контент идентичен — `1 file changed, 0 insertions(+), 0 deletions(-)`, разница только в бите. ## Почему это стоит починить Функционально ничего не ломается: cron зовёт `bash /opt/gendesign/ops/docker-prune.sh`, `restore.sh` запускают руками так же, — бит не участвует. У `restore.sh` этот перекос живёт давно. Чинить стоит не ради бита, а ради сигнала. `git status` на проде — единственный дешёвый способ увидеть, что файл правили руками мимо пайплайна. Пока в нём висят две вечные строки, шум становится фоном, и на его месте перестаёшь замечать настоящую правку. ## Что сделано `git update-index --chmod=+x` на оба файла — режим приведён к тому, что реально на диске и что уже стоит у соседних скриптов. Изменений контента нет, diff состоит только из смены mode. ## Test plan - [x] `git ls-files -s ops/` — оба теперь `100755`, в одном ряду с `backup.sh` и `uptime-healthcheck.sh` - [ ] после деплоя — `git status --short` в `/opt/gendesign` по этим двум файлам чистый Деплой на этот PR **не** сработает: `ops/restore.sh` не входит в `paths:` `deploy.yml`, а `ops/docker-prune.sh` попал туда только что (#2888). Режим доедет со следующим деплоем от любого другого изменения — торопиться некуда, на работу скриптов это не влияет.
lekss361 added 1 commit 2026-08-15 14:18:20 +00:00
chore(ops): выставить +x на docker-prune.sh и restore.sh
All checks were successful
CI Trade-In / changes (pull_request) Successful in 9s
CI / changes (pull_request) Successful in 9s
CI Trade-In / backend-tests (pull_request) Has been skipped
CI Trade-In / browser-tests (pull_request) Has been skipped
CI Trade-In / frontend-checks (pull_request) Has been skipped
CI / backend-tests (pull_request) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Has been skipped
31c8ac4c5f
Оба скрипта закоммичены как 100644, хотя соседние по каталогу backup.sh и
uptime-healthcheck.sh — 100755. На прод-VM файлы лежат с +x, поэтому
`git status` в /opt/gendesign постоянно показывает их как modified:

    M ops/docker-prune.sh
    M ops/restore.sh   (old mode 100644 / new mode 100755, контент идентичен)

Функционально это ничего не ломает: cron зовёт docker-prune.sh через
`bash <путь>`, restore.sh запускают руками так же. Проблема в другом —
постоянный M в прод-репозитории обесценивает единственный дешёвый сигнал,
по которому видно ручную правку файла на проде. Шум надо убирать, а не
привыкать к нему.

Приводим режим к тому, что реально на диске и что уже стоит у соседей.
lekss361 merged commit e8fe9faa13 into main 2026-08-15 14:19:08 +00:00
lekss361 deleted branch chore/ops-scripts-exec-bit 2026-08-15 14:19:08 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: lekss361/gendesign#2889
No description provided.