2010-01-11 2 views
19

중앙 저장소의 구성을 수정하여 마스터 브랜치 (git 사용) 로의 원격 푸시를 금지하는 방법이 있습니까? 릴리스 소유자가 지점을 병합 할 때만 업데이트됩니다.git에서 master 브랜치로의 원격 푸쉬 금지

하위 리포지토리에서 수행 할 수 있지만 불행히도 새 컴퓨터에서 수행하는 것을 잊어 버리기 쉽고 항상 우연이 아닙니다. 우발적 인 푸시로부터 보호 할 방법이 없습니다. 개발자는 어떤 지사에서라도 당겨서 모든 지사로 되돌릴 수 있어야합니다 (단 master은 읽기 전용으로보고 싶음). git으로 가능합니까? 또는 우리는 잘못된 작업 흐름을 시도하고 있습니다.

업데이트 TL; DR : 찰스 베일리 덕분에, 대답은 주인을 확인하고 다음 설정 추가됩니다 : 당신의 contrib 디렉토리에 update-paranoid라는 샘플 update 후크에서 살펴 보셔야합니다

receive.denyCurrentBranch = true 
+1

[중앙 "개발 리포지토리"에서 읽기 전용 분기를 구성하는 방법]의 비슷한 문제에 대한 예제 스크립트를 제공합니다.]] (http://stackoverflow.com/questions/14502164/how-to-configure- 읽기 전용 - 중앙 개발 저장소 브랜치) – Alberto

답변

13

을 자식 배포. 이 기능을 사용하면 분기 별 ACL을 설정하여 누가 어떤 분기로 푸시 할 수 있는지 제한 할 수 있습니다. 이렇게하면 마스터 업데이트 만 소유자를 릴리스 할 수 있도록 제한 할 수 있습니다.

"분기 병합을 통해서만 업데이트되었습니다"라는 것이 무슨 뜻인지 잘 모르겠습니다. 나는 중앙 저장소가 벌거 벗었다 고 가정하고 있는데,이 경우 지점은 일반적으로 푸시에 의해서만 업데이트됩니다. 병합 인 커밋과 그렇지 않은 커밋 사이에는 자식에 대한 개념적인 차이가 없습니다. 따라서 마스터에 대한 업데이트 유형을 제한하기위한 기준이 의도 된 것인지 확실하지 않습니다. 가 아닌 맨손으로 중앙 저장소에 밀어하고 master 그때 당신은 단순히 true 또는 refuse-receive.denyCurrentBranch 변수 설정을 설정할 수 있습니다 항상 체크 아웃 지점 인 경우

.

+0

우리가 금지하고 싶은 원격'푸시 (push) '와는 반대로 (병합을 통해) 로컬로 수행되어야합니다. 그리고 아니, 그것은 맨손이 아닙니다. '마스터'가 체크 아웃되었고 말하자면 작업 복사본입니다. 감사합니다. 편집증을 살펴보고, 아마도 한 사람에게만 제한 할 것입니다. – kibitzer

+0

좋아, 물어볼거야. 중앙 저장소가 베어되지 않고 어떤 지점이 일반적으로 체크 아웃 된 지점입니까? –

+0

'master'는 체크 아웃 된 브랜치입니다; 베어 리포 지 토리를 생성 할 수는 있지만, 아이디어는 마스터로 직접 푸시하는 것을 금지하는 것이기 때문에 요점은 보이지 않습니다. 그러므로이 질문. 읽기 전용 마스터에 대한 우리의 탐구에서 도움이된다면 맨손 저장소를 만들고 그걸 풀 수 있습니다 :) – kibitzer

관련 문제