2011-11-23 13 views
15

私はプロジェクトにgitとCodebaseを使用しています。間違ったユーザーとしてgitにコミットするユーザーを停止させよう

私はちょうどテストをしました。別のユーザーがコミットにタグ付けする原因となる別の電子メールアドレスと名前セットを持つgitリポジトリにコミットできました。私はこれをリポジトリにプッシュし、それが私のものであってもコミットしたユーザーとして表示されました。

ユーザーが他のユーザーのユーザーの詳細をコミットまたはプッシュできないようにする方法はありますか(効果的に、別のユーザーのものとしてコミットすることはできません)。

編集:

私は、ローカルの作業に何でもする、それは単にユーザーがへのフルアクセス権を持っているリポジトリのコピーから、この認証は、サーバーへのコミットをプッシュの段階で発生する必要があるだろうと仮定彼らは一緒に欲しい。これは私が何かについて質問する必要がありますか?Codebase多分?

編集2:

Gitの設定要求として:

(レポ/ .git /設定)

[core] 
    repositoryformatversion = 0 
    filemode = true 
    bare = false 
    logallrefupdates = true 
    ignorecase = true 
[remote "origin"] 
    fetch = +refs/heads/*:refs/remotes/origin/* 
    url = [email protected]:<redacted company name>/<redacted project name>/test.git 
[branch "master"] 
    remote = origin 
    merge = refs/heads/master 
+0

.git/configの内容を投稿できますか? –

+0

あなたは何をサーバーに使用していますか?普通のgit、gitosis、gitolite、...? – CodesInChaos

+1

OPはGitHubに似たCodebaseを使用しています。それは質問の先頭です。 –

答えて

3

メールで送信:これは有効な技術であるが、それは想定していサーバーを効果的に完全に制御できます。ホストされたソリューションを使用している場合は、すべてのベットはオフになっています。

投稿者の名前と電子メールをリポジトリのupdateフックで検証できます。

#!/bin/sh 
set -- refname sha1_old sha1_new 
author_name=$(git log --pretty=format:%an $sha1_new) 
author_email=$(git log --pretty=format:%ae $sha1_new) 

もちろん、これらの値が有効かどうかを判断するのは難しいことではありません。

ssh設定でcommand=""オプションを使用すると、sshキーを作成者情報にマップするgit-receive-packのラッパーを作成できます。例えば、このような、何か:

#!/bin/sh 

GV_AUTHOR_NAME="$1" 
GV_AUTHOR_EMAIL="$2" 

export GV_AUTHOR_EMAIL GV_AUTHOR_NAME 
eval exec $SSH_ORIGINAL_COMMAND 

そして、あなたはこのような何かauthorized_keysラインを使用します。このすべての結果は、あなたのupdateスクリプトは、環境変数GV_AUTHOR_NAMEGV_AUTHOR_EMAILを持っているだろうということです

command="~/bin/gitvalidator 'Lars Kellogg-Stedman' '[email protected]'" ssh-rsa ... 

利用可能であり、一致しなかった場合にはコミットに対してチェックし、エラーで終了することができます。あなたは自分の資格情報を持っている場合あなたが他の誰かのようにコミットでき

:私は私の最新の更新プログラムを提出する前に

+0

誰かの答えをダウンボトムする場合は、コメントを残すことが通例です。それは人々が時間の経過とともに答えの質を向上させるのに役立ちます。この回答に間違いがある場合は、私が解決できるように私に知らせてください。ありがとう! – larsks

+0

(...私はこれが単なる報復であったと思うが) – larsks

+0

私はコードベースの人にこれについての彼らの立場に感謝したいと思います:) – Richard

-3

申し訳ありませんが、私のポストが削除されました。 fooとbarは、レポにコミットすることができます

ユーザーを次のように

だけ明確にする、あなたがについて尋ねているシナリオがあります。ユーザーFooがユーザーBarとしてリポジトリにコミットするのを防ぐ必要があります。

この場合、ユーザーBarはパスワードを保護するのと同じように、秘密のSSH鍵を保護する必要があります。それはあなたのコミットを認証するために使用されます。

+0

あなたの名前とメールアドレスを自由に設定できます。あなたが使っているsshキー(またはsshを使っているかどうかは関係ありません)とは関係ありません。 SSH鍵は、gitによって記録された名前と電子メールアドレスとはまったく関係ありません。 – larsks

+0

コミットは、使用するトランスポートとは完全に独立したgitによってローカルで行われます。従来の設定では、sshをトランスポートとして使用している場合、プッシュを実行するユーザーを認証するために使用される資格情報は、プッシュされているコミットの内容と関係する必要はありません。 –

+0

彼はGitHubに似ているCodebaseに関して質問しています。実際に尋ねられていることに関連して問題を見ることは、回答を評価する際に役立ちます! –

関連する問題