Как установить исполняемый файл git hook через gradle

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)

Gradle за прокси-сервером
Gradle за прокси-сервером
Создайте проект Gradle под сетевым прокси.
"DevOps: Jenkins & AWS Series, часть 5: Установка Gradle на Ubuntu 22.04
"DevOps: Jenkins & AWS Series, часть 5: Установка Gradle на Ubuntu 22.04
В этой статье блога мы проведем вас через процесс установки Gradle на Ubuntu 22.04, интеграции его с Jenkins и создания задания Gradle. Мы...
0
0
1 462
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы должны установить правильные разрешения.

copy {
    from "../pre-push"
    into "../.git/hooks"
    fileMode 0777
 }

Это должно помочь вам.

Другие вопросы по теме