人们如何处理本地和远程之间不同的shebang?
例如,我的本地python是/ usr / bin / python,而我的web主机是〜/ local / bin / python中专用的python。首席开发人员可能在/ usr / bin / ruby上有ruby,而我的是/ usr / local / bin / ruby。
我手动编辑了shebang,但随后git将其标记为更改。理想情况下,我希望git忽略文件的第一行,或者忽略文件中行的正则表达式匹配。
在我看来,这一定是一个非常普遍的问题,但我找不到它。
我使用git,但我不会在任何方面称自己为专家。
答案 0 :(得分:18)
将其更改为
#!/usr/bin/env python
或
#!/usr/bin/env ruby
然后它应该适用于您的所有系统,前提是您的PATH
环境变量中包含python和ruby。
答案 1 :(得分:3)
你问题的解决方案是git的涂抹/清除过滤规则。这允许您设置过滤器,这些过滤器将在结帐时修改文件并在签入时撤消这些更改。这是一个很好的图形:
首先通过向.git/config
添加以下内容,设置可以在两个方向上进行更改的过滤器。涂抹过滤器将repo中的文件转换为工作副本,clean过滤器撤消更改。运行涂抹很重要 - > clean产生与原始文件完全相同。如果在repo中#!~/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,了解具体情况。
答案 2 :(得分:0)
这属于评论,但我还没有足够的声誉......你可以删除哈希爆炸,并且当你从命令行运行它时总是用python
运行它...也许。 ..