Git:如何处理不同的shebang

时间:2011-02-19 05:56:17

标签: git shebang

人们如何处理本地和远程之间不同的shebang?

例如,我的本地python是/ usr / bin / python,而我的web主机是〜/ local / bin / python中专用的python。首席开发人员可能在/ usr / bin / ruby​​上有ruby,而我的是/ usr / local / bin / ruby​​。

我手动编辑了shebang,但随后git将其标记为更改。理想情况下,我希望git忽略文件的第一行,或者忽略文件中行的正则表达式匹配。

在我看来,这一定是一个非常普遍的问题,但我找不到它。

我使用git,但我不会在任何方面称自己为专家。

3 个答案:

答案 0 :(得分:18)

将其更改为

#!/usr/bin/env python

#!/usr/bin/env ruby

然后它应该适用于您的所有系统,前提是您的PATH环境变量中包含python和ruby。

答案 1 :(得分:3)

你问题的解决方案是git的涂抹/清除过滤规则。这允许您设置过滤器,这些过滤器将在结帐时修改文件并在签入时撤消这些更改。这是一个很好的图形:

enter image description here

首先通过向.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运行它...也许。 ..