есть ли хак для полнофункциональной кроссплатформенной линии shebang?
Вопрос
Проблема: очевидно, что сценарии в каталоге .git/hooks зависят от имени файла, соответствующего одному из:
post-commit
pre-commit
pre-rebase
и т. д ...
Никакого понятия «расширение файла» не требуется, поскольку «строка shebang» указывает, как файл должен работать, если он является исполняемым и работает на вашем компьютере с Linux.
Проблема в том, что у вас есть сценарии, которые вы хотите запустить в системе Windows.
Вопрос: Есть ли способ выполнить сценарии перехвата, понятные на компьютере с Windows?
Решение
Я не думаю, что в Windows есть концепция выполнения файлов без расширений.Обходные пути: 1) использовать Cygwin git под bash, где работает весь бизнес shebang, или 2) взломать версию git для Windows, которая фактически анализирует сами строки shebang и загружает соответствующий интерпретатор.Я вижу всевозможные философские возражения против последнего, поэтому предполагаю, что этого не произойдет...
Другие советы
Я знаю, что сильно отстаю в этом вопросе, но у меня есть для вас решение.Если вы используете Python, добавьте «.py» в переменную среды PATHEXT (Панель управления, Система, Дополнительно, Переменные среды).Аналогично и для вашего конкретного языка сценариев.Затем назовите хуки post-commit.py, pre-commit.py и т. д.Когда программа просит Windows выполнить файл «post-commit» в определенном каталоге, Windows будет просматривать PATHEXT по порядку, пока не найдет файл, соответствующий «post-commit.extension», который затем выполнит.Я сделал это давным-давно с помощью svn-хуков в Windows.
Я вообще остановился на варианте 3):
Создайте сценарий-оболочку Windows, который вызывает git. и вызывает любые связанные перехватчики, которые я хочу запустить.Обратной стороной является то, что мне нужно настроить программу-оболочку так, чтобы она делала то, что git сделал бы автоматически, если бы я мог просто использовать стандартные файлы перехватчиков.