есть ли хак для полностью функциональной кроссплатформенной линии Shebang? - PullRequest
3 голосов
/ 19 февраля 2010

Проблема: очевидно, что скрипты в каталоге .git / hooks зависят от имени файла, соответствующего одному из:

post-commit
pre-commit
pre-rebase

и т.д ...

Понятие «расширение файла» не требуется, поскольку «строка shebang» указывает, как должен выполняться файл, если он исполняемый и работает на вашем компьютере с Linux.

Проблема в том, что у вас есть несколько сценариев, которые вы хотите запустить на Windows-коробке.

Вопрос: Есть ли способ выполнения сценариев перехвата, который можно понять на компьютере с Windows?

Ответы [ 3 ]

3 голосов
/ 04 августа 2010

Я знаю, что я далеко позади в этом, но у меня есть решение для вас. Если вы используете python, добавьте «.py» в переменную среды PATHEXT (Панель управления, Система, Дополнительно, Переменные среды). Аналогично для вашего конкретного языка сценариев. Затем назовите перехватчики post-commit.py, pre-commit.py и т. Д. Когда программа просит Windows выполнить файл «post-commit» в определенном каталоге, Windows будет просматривать PATHEXT в порядке, пока не найдет соответствующий файл "post-commit.extension", которое он затем выполнит. Я делал это давным-давно с помощью svn hooks в Windows.

1 голос
/ 19 февраля 2010

Я не думаю, что в Windows есть концепция выполнения файлов без расширений.Обходными путями могут быть: 1) использовать Cygwin Git под Bash, где работает весь бизнес с Shebang, или 2) взломать версию Windows Git, которая фактически анализирует строки Shebang и загружает соответствующий интерпретатор.Я могу видеть всевозможные философские возражения против последнего, поэтому я предполагаю, что этого не произойдет ...

0 голосов
/ 19 февраля 2010

Я фактически согласился на вариант 3):

Создайте сценарий Windows-оболочки, который вызывает git , а вызывает все связанные хуки, которые я хочу запустить. Недостатком является то, что я должен настроить программу-оболочку так, чтобы она делала то, что git сделал бы автоматически, если бы я мог просто использовать стандартные файлы ловушек.

...