Git是否可以在服务器端强制执行间距约定?

Git是否可以在服务器端强制执行间距约定?,git,tabs,config,indentation,Git,Tabs,Config,Indentation,我有一个Git存储库,有几个人正在使用。我想强制执行间距标准(无制表符,如果存在制表符,则替换为3个空格)。是否可以在服务器端强制执行此操作(即,如果有人使用选项卡推送文件,请在文件进入之前将其转换为3个空格) 到目前为止,我一直在尝试编写一个过滤器,我已经让它工作了,但据我所知,这是一个客户端解决方案 我已将.gittributes文件签入存储库,其中包含: *.py filter=indent 我在配置中添加了以下内容: [filter "indent"] clean = sed -

我有一个Git存储库,有几个人正在使用。我想强制执行间距标准(无制表符,如果存在制表符,则替换为3个空格)。是否可以在服务器端强制执行此操作(即,如果有人使用选项卡推送文件,请在文件进入之前将其转换为3个空格)

到目前为止,我一直在尝试编写一个过滤器,我已经让它工作了,但据我所知,这是一个客户端解决方案

我已将
.gittributes
文件签入存储库,其中包含:

*.py filter=indent

我在配置中添加了以下内容:

[filter "indent"]
    clean = sed -i -b 's/\t/   /g' %f
    smudge = dir
但是,在进行了大量搜索之后,我仍然无法找到“签入”存储库中的配置条目。为了让过滤器工作,用户需要手动将条目添加到配置中。有没有办法强制所有用户对存储库进行配置设置?还是有其他方法可以做到这一点


到目前为止,我已经获得了我的大部分信息。

根据评论和其他研究,Git的协作模式似乎很难在服务器端强制执行操作


我的最终解决方案是使用我拥有的过滤器,并分发一个简单的脚本供用户运行,以将相关配置添加到他们的系统中(根据的答案)。

可能的重复回答了我的第二个问题,即我是否可以通过过滤器实现服务器端间距约定(答案:不太可能)。所以我想这让我不得不研究预提交挂钩以达到预期效果?其他人可以在他们自己的回购协议中强制执行他们想要的任何标准,并且可以让你在自己的回购协议中采用这些标准变得非常容易。你也可以这样做。将建议的配置命令放入
README
中,人们就可以
vap:!sh
在vim中运行,或者在emacs中运行,或者把命令放在安装脚本中,他们就可以运行它。你可以在服务器端挂接器中检测标签并拒绝这些推送。这将取决于客户重做他们的内容以符合要求。