renovatebot/renovate

Copier manager doesn't set `isExecutable` on added/modified files

Aberta

#42.239 aberto em 30 de mar. de 2026

 (0 comentário) (0 reação) (0 responsável)TypeScript (1.916 forks)batch import
help wantedmanager:copierpriority-3-medium

Métricas do repositório

Stars
 (14.066 estrelas)
Métricas de merge de PR
 (Mesclagem média 2d 23h) (339 fundiu PRs em 30d)

Description

As noted in https://github.com/renovatebot/renovate/discussions/41438, when we're not making sure that the isExecutable flag in https://github.com/renovatebot/renovate/blob/42ee883ab854a5be7f86309858014e55fc5ee62b/lib/util/git/types.ts#L63 is set.

For instance, using the minimal repro:

% copier --version
copier 9.14.0
% copier update --skip-answered --defaults --answers-file .copier-answers.yml --vcs-ref v1.1.0
Updating to template version 1.1.0
jamietanna@caerbannog .venv tmp 41438 (git)-[main]* % gst
## main...origin/main
 M .copier-answers.yml
?? bin/
jamietanna@caerbannog .venv tmp 41438 (git)-[main]* % ls bin
deploy.sh
jamietanna@caerbannog .venv tmp 41438 (git)-[main]* % ls -al bin
total 4
drwxr-xr-x 3 jamietanna staff  96 Mar 30 09:45 .
drwxr-xr-x 8 jamietanna staff 256 Mar 30 09:45 ..
-rwxr-xr-x 1 jamietanna staff  48 Mar 30 09:45 deploy.sh

This does correctly copy an executable file, but when Renovate commits it does not set the isExecutable flag.

We need to correctly identify this, and then set it.

Guia do colaborador