Ответ 1
Измените его на
#!/usr/bin/env python
или
#!/usr/bin/env ruby
Затем он должен работать на всех ваших системах, если у вас есть python и ruby в вашей переменной среды PATH
.
Как люди имеют дело с разными shebangs между местными и удаленными?
Например, моим локальным питоном является /usr/bin/python, тогда как мой веб-хост представляет собой специально построенный питон в ~/local/bin/python. Ведущий разработчик может иметь рубин в /usr/bin/ruby, тогда как мой -/usr/local/bin/ruby.
Я вручную редактирую shebang, но затем git отмечает это как изменение. В идеале я хотел бы, чтобы git игнорировал первую строку файла или, возможно, игнорировал соответствие регулярных выражений строк в файле.
Мне кажется, что это должна быть очень распространенная проблема, но я не могу найти упоминания об этом.
Я использую git, но я бы не стал называть себя экспертом каким-либо образом.
Измените его на
#!/usr/bin/env python
или
#!/usr/bin/env ruby
Затем он должен работать на всех ваших системах, если у вас есть python и ruby в вашей переменной среды PATH
.
Решение вашей проблемы - это правило git s smudge/clean filter. Это позволяет вам настроить фильтры, которые будут модифицировать файлы при проверке и отменять эти изменения при проверке. Вот хорошая графика:
Сначала настройте фильтры, которые могут внести изменения в обоих направлениях, добавив к вам что-то вроде следующего: .git/config
. Фильтр smudge преобразует файл в репо в рабочую копию, чистый фильтр отменяет это изменение. Важно, чтобы при запуске smudge → clean выводился именно исходный файл. Представленные здесь фильтры заменят первую строку #!~/local/bin/python
в рабочей копии, если она #!/usr/bin/env python
в репо
[filter "pyshebang"]
smudge = sed '1s?^#!/usr/bin/env python$?#!~/local/bin/python?'
clean = sed '1s?^#!~/local/bin/python$?#!/usr/bin/env python?'
Теперь активируйте этот фильтр, добавив такую строку в .git/info/attributes (создайте этот файл, если он не существует):
*.py filter=pyshebang
Если ваши файлы python не заканчиваются на .py
, просто настройте фильтр на правильные файлы/всю папку/все файлы. Если вы правильно настроите фильтр, он все равно будет изменять файлы с помощью python shebang.
Я бы рекомендовал прочитать smudge filters, чтобы понять детали того, что происходит.
Это относится к комментариям, но пока у меня недостаточно репутации... Вы можете просто удалить хеш-ханг и всегда запускать его с помощью python
, когда вы запускаете его из командной строки... может быть...