2009-10-10 3 views
4

Я написал сценарий post commit в python, «c: \ myfolder \ myscript.py». Я хочу вызвать его из сценария post-commit. Это не находит его:Как я могу использовать сценарий post-commit для git (msysgit on windows) для вызова моего скрипта python как python, а не bash?

#!/bin/sh 
c:\myfolder\myscript.py 

Баш считает команду C: myfoldermyscript.py - косая черта понижены.

Итак, я попытался слэша:

#!/bin/sh 
c:/myfolder/myscript.py 

Но похоже, Баш считает мой .py файл сам по себе является Баш скрипт, и поэтому я получаю Баш ошибки, как это ошибочно пытается интерпретировать ее.

ответ

6

Первая строка сценария называется Shebang, и единственная проблема с ним:

Shebangs указать абсолютные пути к системным исполняемым; это может вызвать проблемы с системами, которые имеют нестандартные макеты файловой системы.
Даже если системы имеют довольно стандартные пути, вполне возможно, что варианты одной и той же операционной системы могут иметь разные местоположения для требуемого интерпретатора.

Единственный способом будет звонить питон непосредственно в вашем скрипте

#!/bin/sh 
C:/apps/Python25/python c:/myfolder/myscript.py 

В любом случае, косая черта в порядке: это Баш сеанс, который используется для выполнения Git и его крючков.
Интерес вызова непосредственно интерпретатор питона будет заменить его переменное окружение:

#!/bin/sh 
$PYTHON_HOME/python $SCRIPT_FOLDER/myscript.py 
+0

То, что вы написали, имеет смысл. Таким образом, механизм Windows расширения файла «py», связанный с исполняемым файлом «python.exe», так что «выполнение» файла py вызывает python.exe, этот механизм не может быть подключен к Windows -ignorant bash, верно? –

+0

Правильно, ассоциация файлов Windows не будет работать в сеансе bash. Но сам '' python' '(или '' python.exe') мог бы работать, если '' C:/apps/Python25'' находится в переменной среды PATH. – VonC

+0

@ VonC - глядя на ваш профиль пользователя, интересно, не возражаете ли вы взглянуть на этот вопрос и добавить свои 2 цента, если вы думаете иначе, чем то, что уже существует: http://stackoverflow.com/questions/1484153/how-do-bug-tracker-version-control-integration-work-with-standard-git-workflows –

5

Добавление следующего, путь к моему питону переводчику, так как первая линия моего питона скрипт работала:

 
#!C:/apps/Python25/python 

Существуют ли более эффективные способы?

+0

Это работает, потому что притон определяет местоположение интерпретатора файла сценария, в этом случае 'Python', вместо «Баш». [link] (http://en.wikipedia.org/wiki/Shebang_%28Unix%29) – Nathan