TL; DR: как добавить разрешения на выполнение / установить исполняемый файл через Gradle в скрипт ловушки git
Я вместе с командой разрабатываю приложение для Android, и мне было поручено реализовать сценарий pre-push для всей компании в качестве ловушки git.
Я добавил файл pre-push со сценарием в корневой каталог проекта и добавил сценарий копирования, чтобы скопировать его в папку хуков.
Я пробовал добавить
android {
compileSdkVersion 27
copy {
from "../pre-push"
into "../.git/hooks"
}
tasks.create(name: 'gitExecutableHooks') << {
Runtime.getRuntime().exec("chmod -R +x .git/hooks/");
}
defaultConfig {
...
}
}
файл копируется в правильное место, но я получаю предупреждение
.git/hooks/pre-push' hook was ignored because it's not set as executable.
и, естественно, ловушка git не выполняется.
(P.S. это работает так, как задумано на машинах с Windows, и не работает только на машинах MacOS и Linux)


Вы должны установить правильные разрешения.
copy {
from "../pre-push"
into "../.git/hooks"
fileMode 0777
}
Это должно помочь вам.