git не может выполнить скрипт python как hook

Я создал небольшой pre-commit в python. Этот хук работает как прелесть под Linux, но в Windows он продолжает говорить мне:

 error: cannot spawn .git/hooks/pre-commit: No such file or directory 

Я знаю, что здесь были похожие вопросы по одной и той же проблеме, а выводы швов – это shebang. Мой сценарий имеет это в первой строке:

 #!F:\PortableApps\PortablePython3.2\App\python.exe 

Также интересно отметить, что выполнение сценария просто путем записи .git/hooks/pre-commit работает замечательно, но как только я пытаюсь зафиксировать, git выплевывает вышеуказанное сообщение.

Еще одна интересная вещь: когда я конвертирую кодировку из ANSI в UTF-8 (используя Notepad ++), я получаю следующую ошибку при попытке выполнить скрипт:

 .git/hooks/pre-commit: Cannot execute binary file 

Я использую следующие инструменты:

  • PortablePython 3.2.1.1
  • msysgit 1.7.6 (Portable)

One Solution collect form web for “git не может выполнить скрипт python как hook”

Я использовал прокси-подход, чтобы заставить скрипт python работать под окнами (с msysgit). Полный скрипт (с описанием того, как я это сделал) можно найти здесь: https://gist.github.com/1839424

Вот важная часть о том, как заставить его работать под Windows


Если вы работаете с Windows (и «msysgit»), это немного сложнее. Поскольку «msysgit», похоже, имеет проблемы с обработкой SHEBANG , вам придется использовать небольшой трюк, чтобы сделать исполняемый файл сценария (дополнительную информацию об этой проблеме можно найти здесь ).

Чтобы заставить скрипт работать, вы захотите удалить SHEBANG из сценария Python («pre-commit.py») и использовать сценарий bash bash для вызова интерпретатора. Этот скрипт должен выглядеть примерно так:

 #!/bin/sh python .git/hooks/pre-commit.py 

Храните этот скрипт в виде файла с именем pre-commit (без конца файла). Это предполагает, что у вас есть Python в вашей PATH . Если вы этого не сделаете, вы также можете указать полный путь к исполняемому интерпретатору.

Этот скрипт вызывается «git commit» и вызывает скрипт python для проверки огромных файлов. Путь после SHEBANG не должен изменяться, так как msysgit автоматически перенастроит его. Вы должны указать путь относительно репо-root для исполняемого скрипта Python (потому что это то, откуда вызывается скрипт).

После этого вы захотите скопировать оба файла-обертки («pre-commit») и Python-скрипт («pre-commit.py») в ваш репозиторий «.git / hooks» -directory, персонализировать скрипт Python («max_file_size» и «git_binary_path») и пометьте исполняемый файл «pre-commit» -file.

  • Использование sys.stdin в select.select в Windows
  • py2exe для генерации dll?
  • Как устранить проблему с косой чертой в пути на windows в python?
  • Использование Numpy на разных платформах
  • Что может изменить мое управляющее слово с плавающей запятой за моей спиной?
  • Ошибка python ctypes.WinDLL, _dlopen (self._name, mode) не может быть найдена
  • Печать символов unicode в stdout в python печатает неправильные символы
  • Как начать использовать `scipy`
  • Отправка ^ C в объекты подпроцесса Python в Windows
  • py2exe - Нет системных модулей 'pywintypes'
  • Не удается найти lpython2.7
  • Python - лучший язык программирования в мире.