Git:强制执行Shell脚本权限

4
在Git中,您可以使用644或755权限检入文件。我希望强制所有.sh文件始终以755权限存储,以便可以立即执行。特别是在Windows环境下,很容易意外丢失权限。
那么,有没有一种配置方式,最好像使用.gitattributes配置文件处理一样来配置它?可能可以通过挂钩完成,但是否有更清晰的方法呢?
1个回答

2
这可能可以通过使用.gitattributes过滤器来实现。您可以通过以下配置部分实现该目标:
将以下内容添加到.gitattributes中:
*.sh    filter=permissions

并将以下内容添加到.git/config文件中:

[filter "permissions"]
        clean = chmod 755 %f

一旦你使用git add添加了一个.sh文件,clean过滤器将被应用并更改其权限。不幸的是,权限更改不会被添加到索引中,因此这个解决方案显然是不完整的。


1
我理解得对吗,筛选器是必须在本地执行的操作,不能存储在版本控制中,因此适用于使用存储库的任何人? - eis
你说得对,我没有想到:你可以将.gitattributes文件添加到仓库中,但除非其他用户在其配置中定义了权限过滤器,否则它不会起作用。 - georgebrock
这个不起作用!通过将文件传输到STDIN来调用一个过滤器,预期它会在STDOUT上输出结果。如果你像这样做,你会在你的存储库中得到空文件,因为'chmod'没有在STDOUT上输出任何内容。 - Jens

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接