우리 리포지토리의 마스터, 알파 및 베타 브랜치를 삭제할 수 없도록 설정할 후크를 설정하려고합니다. 아무도 이것으로 도울 수 있습니까? 나는 작은 도움없이 내 자신의 개발에 내 운을 시험하고 싶지 않아 그래서 망할 훅을 한 적이있다.git에서 master 브랜치를 Dissallow로 삭제
미리 감사드립니다.
우리 리포지토리의 마스터, 알파 및 베타 브랜치를 삭제할 수 없도록 설정할 후크를 설정하려고합니다. 아무도 이것으로 도울 수 있습니까? 나는 작은 도움없이 내 자신의 개발에 내 운을 시험하고 싶지 않아 그래서 망할 훅을 한 적이있다.git에서 master 브랜치를 Dissallow로 삭제
미리 감사드립니다.
pre-receive
후크. 맨손 중앙 저장소를 사용한다고 가정하면 your-repo.git/hooks/pre-receive
에 다음 코드를 입력하고 chmod +x your-repo.git/hooks/pre-receive
을 잊지 마세요.
#! /usr/bin/perl
# create: 00000... 51b8d... refs/heads/topic/gbacon
# delete: 51b8d... 00000... refs/heads/topic/gbacon
# update: 51b8d... d5e14... refs/heads/topic/gbacon
my $errors = 0;
while (<>) {
chomp;
next
unless m[^
([0-9a-f]+) # old SHA-1
\s+
([0-9a-f]+) # new SHA-1
\s+
refs/heads/(\S+) # ref
\s*
$
]x;
my($old,$new,$ref) = ($1,$2,$3);
next unless $ref =~ /^(master|alpha|beta)$/;
die "$0: deleting $ref not permitted!\n"
if $new =~ /^0+$/;
}
exit $errors == 0 ? 0 : 1;
'푸시'를 통해 모든 분기 삭제를 거부하면 저장소의 구성 변수 receive.denyDeletes
을 true
으로 설정할 수 있습니다.
더 정교한 제어가 필요한 경우 자식 배포판 contrib/hooks
폴더의 update-paranoid
후크를 살펴 보는 것이 좋습니다. 이 기능을 사용하면 푸시를 통한 빨리 감기를 거부하고 삭제를 거부하는 것과 같은 작업을 수행 할 수있는 ref acls를 설정하고 좀 더 정교한 동작을 수행 할 수 있습니다.
update-paranoid
은 자신 만의 훅을 쓰지 않아도 필요한 모든 것을 처리해야합니다.