2013-10-01 1 views
1

커밋을 허용하지 않고 오류를 표시하여 후행 공백을 내 지점에 강제로 적용하는 것과 같은 작업을하고 싶습니다. .git/config에 무언가를 추가 할 수 있다는 것을 알고 있지만, 무언가를하고 싶다면 repo가 ​​복제 될 때 파일이 여전히 .gitignore처럼 보이기를 바랍니다. 자식은 config와 비슷한 것을 허용합니까?git - 내 레포에 대한 공개 기본 설정을 가질 수 있습니까?

답변

0

구성을 복제 할 수 없습니다.

당신 수 설정 사용자가 당신의 repo (git clone) 복제 할 때 사용해야 할 것 template directory : 사용자 정의 .git/config을 허용 할

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

(A apply.whitespace set to error 포함) 복제의 repo에 복사 할 수 있습니다.

하지만 사용자가 일 경우에 해당 옵션을 사용해야 함을 의미합니다.


다른 옵션은 공백 오류가 발견 될 경우 커밋 거부하기 위해, 동료가 밀어 것 베어 REPO에 후크를 미리받을 설정하는 것입니다.
해당 제약 조건을 중앙 집중화하면 해당 특정 옵션이 중앙 (베어) 저장소의 밀어 넣기에 적용되므로 사용자가 원하는 설정을 로컬로 가질 수 있습니다. 이러한 후크

예 : 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}