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.

  • Как определить путь к php.exe на windows - поиск путей по умолчанию?
  • Подпроцесс Python.Popen как другой пользователь в Windows
  • Детерминированный скрипт python ведет себя недетерминированным образом
  • MSSQL2008 - Pyodbc - Предыдущий SQL не был запросом
  • Как извлечь выделенный текст из активного окна
  • Более быстрый способ чтения пикселя экрана в Python, чем PIL?
  • (Python) Проблемы с каталогами, которые имеют специальные символы
  • Скрыть Windows start orb в python (3.2)
  • Python - лучший язык программирования в мире.