есть ли хак для полнофункциональной кроссплатформенной линии shebang?

StackOverflow https://stackoverflow.com/questions/2296921

Вопрос

Проблема: очевидно, что сценарии в каталоге .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 сделал бы автоматически, если бы я мог просто использовать стандартные файлы перехватчиков.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top