git - 我可以为我的仓库设置公共首选配置设置吗?

时间:2013-10-01 21:36:11

标签: git git-config

我想通过向他们显示错误而不是允许提交来强迫任何人将尾随空格提交到我的分支。我知道我可以添加一些东西到.git / config但是我有兴趣做一些事情,这样当克隆repo时,文件仍然像.gitignore一样。 git是否允许使用config进行类似的操作?

1 个答案:

答案 0 :(得分:0)

无法克隆配置。

您可以设置用户在克隆您的仓库时需要使用的template directorygit clone):

git clone --template=/path/to/template/folder /url/of/your/repo

这样就可以在克隆的仓库中复制自定义.git/config(使用apply.whitespace set to error)。

但这意味着用户必须使用该选项。


另一种选择是在同事推送的裸存储库上设置预接收挂钩,以便在检测到空白错误时拒绝提交。
集中该约束允许用户在本地拥有他们想要的设置,因为在中央(裸)仓库中推送时强制执行该特定选项。

此类钩子的示例:this gist, ruby script(提取)

#!/usr/bin/env ruby

old_sha, new_sha, ref = STDIN.read.split(' ')

diff = %x{ git diff --raw --name-only #{old_sha} #{new_sha} 2> /dev/null }

diff.each_line do |line|
file = line.chomp
next unless file =~ /\.rb\Z/i

tree = %x{ git ls-tree --full-name #{new_sha} #{file} 2> /dev/null }.split(" ")

contents = %x{ git cat-file blob #{tree[2]} 2> /dev/null }

if found = contents.each_line.map(&:chomp).find{ |e| e =~ /\s+\Z/ }
puts <<EOF
> !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
> !!!!!!!!! PUSH REJECTED !!!!!!!!!
> !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
>
> REMOVE TRAILING WHITESPACE.
>  * #{tree[3]}
>
>  #{found.inspect}