2012-04-24 3 views
1

gitolite 서버를 설치하려고합니다. git에서 짜증나는 한 가지 문제는 코드를 커밋 할 때 사용자 이름이 확인되지 않는다는 것입니다.git hook을 사용하면 어떻게 사용자 신원을 확인하거나 확인합니까?

이로 인해 user1이 일부 위조 된 코드를 작성하고 user2를 username으로 설정할 수있는 "신원 피싱"이 발생할 수 있습니다. 그렇다면 우리는 user2를 비난 할 것입니다.

사용자 이름을 확인하거나 강제로 커미터의 신원과 일치하도록하는 방법을 찾고 있습니다.

+0

ssh를 사용할 경우 사용자 피싱은 없습니다 – CharlesB

+3

힘내는 한 사용자가 다른 사용자가 작성한 작업을 합법적으로 저지른 경우 사용 사례가 있습니다. 제 토픽 브랜치에 리베이스 (rebase)하고 푸시 (push)하는 커밋을 푸시한다고 가정 해보십시오. 그 상황을 어떻게 처리하고 싶습니까? –

+1

@CharlesB 사용자가 유효한 ssh 액세스 권한을 가지고 있지만 git 사용자 이름을 변경하고 다른 사용자 이름으로 푸시 할 수 있다면 예 – Ptitaw

답변

4

당신은 사용하여 커밋에 서명 할 수 있습니다 : 당신은 다음 서명되지 않은 커밋 거부 할 서버 측 자식 후크를 사용할 수 있습니다

git commit -S (자식 1.7.9 이후에서만 사용 가능).

자료 : 자식 후크와 http://phreaknerd.wordpress.com/2012/02/09/signing-git-commits-with-your-gpg-key/

+2

[이 링크] (http://git.661346.n2.nabble.com/GPG-signing-for-git-commit-td2582986.html)에는 각 커밋에 서명하는 것이 "어리석은"이유에 대한 토론이 있습니다. 읽을만한 가치가있다. – simont

+2

counter-example : [Mike Gerwitz] (http://mikegerwitz.com/about)의 "[git horror story] (http://mikegerwitz.com/papers/git-horror-story)" – RubyTuesdayDONO

1

, 당신은 업데이트됩니다 심판을받을. 푸시 된 커밋 트리 전체를 확인하여 커미터 이름 & 전자 메일을받을 수 있습니다 (서명되지 않은 경우에도 확신 할 수는 없지만).

Gitolite는 env 변수를 사용하여 다양한 정보를 저장합니다. 연결될 사람의 이름을 가져 와서 확인을 수행 할 수 있습니다.

+1

그 것처럼 보입니다. 그게 어떤 종류의 스크립트 예제를 가지고있는 좋은 시작인가? – Ptitaw

관련 문제