2009-08-12 5 views
5

ssh를 통해 공유 git 저장소를 설정하고 사용자의 공개 키를 authorized_keys에 복사하려고합니다. 나는 ssh-key의 "username"이 repo의 커밋 히스토리의 일부가되도록하고 싶다. (그래서 사용자 "joe"는 그의 이름을 "kate"로 설정할 수 없다 - 우리는 일종의 책임이 필요하다) . 이 일을 할 수있는 방법이 있습니까?ssh 사용자 이름을 ssh를 통해 git 명령과 연결할 수 있습니까?

답변

5

간단히 말해서, 아니오, 방법이 없습니다. 그 이유는 작성자와 커미터 세부 사항은 커밋이 이루어질 때 설정되며 이는 대개 로컬에서 발생합니다. A git push은 나중에 기존 커밋을 원격 리포지토리에 푸시합니다. 커밋은 이미 SHA1 해시에 의해 만들어지고 참조되므로 푸시 작업 중에는 커밋을 변경할 수 없습니다.

당신이 고려해야 할 사항으로는 사람들이 작성하지 않은 커밋을 푸는 것을 막는 사전 수신 또는 업데이트 후크가 있지만 이로 인해 많은 합법적 인 사용이 방지 될 수 있습니다. 사용자를 신뢰하는 것이 현명한 선택 일 수 있습니다.

+0

사용자가 커미터/작성자 이름과 이메일 주소를 변경하고 동료로 위장한 해킹 된 코드를 푸시하면 베어 레포 레벨에서이를 방지 할 수있는 방법이 무엇입니까? – pinkvoid

5

그것은 분산 된 git의 특성으로는 작동하지 않습니다. 상상해보십시오 합병 케이트의 개발 지점. 이 자신의 지역 클론의 케이트에서 커밋은 지금 : 중앙 저장소에

* joe: Merge branch 'kate' 
|\ 
| * joe: update foo 
* | kate: fix test 
* | kate: add test 
|/ 
* joe: initial commit 

하면 푸시 지금, 당신은 사용자 이름을 적용하는, 케이트의 커밋은에 기인 할 것이다 joe.

1

Git-hub에서 모든 사용자는 자신의 서버 측 자식 저장소가 있습니다. 어쩌면 당신은 단지 사용자가 그곳으로 밀어 넣을 수있게 할 수 있고, 당신은 "공식적인"저장소에 관리자를 끌어들이겠습니까? 이 방법은 완벽한 추적 성과 책임이 있습니다. 궁극적 인 책임이있는 중재자도 있습니다.

+0

좋은 제안이지만 모든 커미터가 똑같이 신뢰할 수 있다고 생각하기 때문에 관리자가 하나도 필요하지 않습니다. 한 명의 관리자 만이 오버 헤드가 될 수 있습니다. – krosenvold

관련 문제