2009-08-12 11 views
5

sshで共有gitリポジトリをセットアップしようとしています。ユーザの公開鍵をauthorized_keysにコピーしています。私は本当にssh-keyからの "username"をリポジトリ内のコミット履歴の一部にすることを望んでいます(ユーザ "joe"は "kate"になるように名前を設定できません - 何らかのアカウンタビリティが必要です) 。これを行う方法はありますか?sshのユーザー名とgitをsshを介して関連付けることはできますか?

答えて

5

単に、いいえ、方法はありません。理由は、コミットが行われたときに作成者とコミッターの詳細が設定され、通常はローカルで発生するためです。 git pushは、後で既存のコミットをリモート・リポジトリーにプッシュするときに発生します。コミットはすでにSHA1ハッシュによって作成され参照されているため、プッシュ操作中は変更できません。

あなたが考えているのは、作成していないコミットをユーザーがプッシュできないようにする事前受信または更新フックですが、これにより多くの正当な使用が妨げられる可能性があります。ユーザーを信頼することが唯一の選択肢であることがわかります。

+0

ユーザーがコミッター/作成者の名前と電子メールアドレスを変更し、自分自身を仲間に見せかけるハッキングされたコードをプッシュすると、これを裸のレポレベルで防ぐことは何もありません。 – pinkvoid

5

これは、gitの分散型の性質では機能しません。想像するjoeマージケイトの開発ブランチ。今中央リポジトリに

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

もしジョープッシュは、およびユーザー名を強制され、ケイトのコミットがに起因することになります。そこに彼の地元のクローンでジョーケイトからのコミットは今ありますjoe

1

Git-hubでは、すべてのユーザーが独自のサーバーサイドgitリポジトリを持っています。たぶんあなたは、ユーザーがそこにプッシュすることを許可することができますし、あなたは "公式の"リポジトリに引っ張って管理者を持っているだろうか? このように、完全なトレーサビリティと説明責任があります。最終的な責任を持つ司会者もいます。

+0

良い提案ですが、すべてのコミッターが同じように信頼できるとみなされているので、実際には1人の管理者を望んでいません。 1人の管理者だけがオーバーヘッドになりますが、これはペストのように避けます... – krosenvold

関連する問題