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