Git だけでそれを実際に強制することはできませんが (すべての分散モデルを再考しない限り)、gitolite のように Git リポジトリ サーバーの周りに何らかのカプセル化がある場合は、いくつかのスクリプトを使用してユーザー名を確認できます。
例: update.email-check
.
プッシュされたすべてのコミットの「作成者の電子メール」フィールドをチェックし、この電子メールがプッシュしているユーザーが持っていると予想される電子メールと一致しない場合は許可しない、Gitolite固有のスクリプト。
そのスクリプトに含まれる「哲学ノート」は非常に率直ですが、要点を述べています ;)
哲学的なメモ:
これを行うと、「 DVCS 」の「 D」が壊れ、プッシュに関する限り、すべての開発者が集中型モデルで作業することを余儀なくされます。
他の誰かのコミットとプッシュを修正することを防ぎます (これにはリベース、チェリーピッキングなどが含まれますが、現在はすべて不可能です)。
また、どちらも結果をサーバーにプッシュできないため、2 人の開発者間のオフラインでの共同作業は役に立たなくなります。
PHB は、コミッター ID を検証することは、コードをレビューして QA/テストを実行することと同じではないことに注意する必要があります。コードのレビュー/QA を行っていない場合は、とにかく価値がない可能性があります。逆に、コードをレビューして QA/テストを実行する場合は、作成者の電子メールを検証する必要はありません!
DVCS では、一連のコミットをプッシュした場合、(ある意味で) それらを承認したことになります。シリーズに「署名」する最も正式な方法は、gpg 署名付きタグを追加してプッシュすることですが、ほとんどの人はそこまで行きません。
ただし、Gitolite のログ ファイルは、その説明責任をある程度保持するように設計されています。管理者が定義したコマンドについては、contrib/adc/who-pushed を参照してください。特定のコミットを誰がプッシュしたかをすばやく簡単に知ることができます。
とにかく、ポイントは、このスクリプトの唯一の目的は
- まだ*D*VCSを理解していない人にパンダー
- または、愚かなPHBのチェックリストの項目にチェックを入れます