Git: cómo lidiar con diferentes shebang

¿Cómo manejan las personas con diferentes shebangs entre locales y remotos?

Por ejemplo, mi python local es / usr / bin / python, mientras que mi server web es una python especialmente diseñada en ~ / local / bin / python. Un desarrollador principal puede tener ruby ​​en / usr / bin / ruby, mientras que el mío es / usr / local / bin / ruby.

Edito manualmente el shebang, pero luego lo marca como un cambio. Idealmente, me gustaría que git ignore la primera línea del file, o que ignore una coincidencia de expresiones regulares dentro del file.

Me parece que este debe ser un problema muy común, pero no puedo encontrar ninguna mención de ello.

Yo uso git, pero no me llamaría un experto de ninguna manera.

Cambiarlo a

 #!/usr/bin/env python 

o

 #!/usr/bin/env ruby 

Entonces debería funcionar en todos sus sistemas, siempre que tenga python y ruby ​​en su PATH entorno PATH .

La solución a su problema es la regla de filter de manchas / limpieza de git. Esto le permite configurar filters que modificarán los files en el process de pago y deshará esos cambios al registrarse. Aquí hay un buen gráfico:

enter image description here

Primero configure los filters que pueden hacer el cambio en ambas direcciones, agregando algo como lo siguiente para usted .git/config . El filter de manchas transforma el file en el repository en la copy de trabajo, el filter limpio lo deshace. Es importante que la ejecución de la mancha -> clean produzca exactamente el file original. Los filters proporcionados aquí replaceán la primera línea con #!~/local/bin/python en la copy de trabajo si es #!/usr/bin/env python en el repository

 [filter "pyshebang"] smudge = sed '1s?^#!/usr/bin/env python$?#!~/local/bin/python?' clean = sed '1s?^#!~/local/bin/python$?#!/usr/bin/env python?' 

Ahora active este filter agregando una línea como esta a .git / info / attributes (cree ese file si no existe):

 *.py filter=pyshebang 

Si sus files Python no terminan en .py , simplemente configure el filter en los files correctos / una carpeta completa / todos los files. Si configura el filter correctamente, solo cambiará los files con un shebang python.

Yo recomendaría leer sobre los filters de manchas , para entender los detalles de lo que está pasando.

Esto pertenece a los comentarios pero aún no tengo suficiente reputación … Podrías eliminar el hash bang y ejecutarlo siempre con python cuando lo ejecutas desde la línea de command … tal vez …