著者、コミッター、プッシャーはGitで別の人物になることができますが、gitはプッシャーの情報をログに保存しませんでした。
だから、どうやってそれを手に入れるのですか?
あなたはそうしない。アップストリームリポジトリは、誰がコミットを提供しているかについては何も想定していません。電子メール、USBキーにコピーされた差分パッチ、およびその他のさまざまな転送プロトコルを介して行うことが
できます。
これらのプロトコルの一部(ssh、https)には、必要な情報がログに含まれている場合がありますが、次のようになります。
gitolite-admin
ことができます。Linusが述べているように(「一部のオープンソースプロジェクトはプルリクエストを受け入れないのに、パッチファイルのみを電子メールで送信するのはなぜですか?」):
github IDはランダムであるため、プルリクエストは署名されたタグであると予想されます。これにより、問題の人物のIDを確認できます。
したがって、誰かがコミットをプッシュするときに、すべてのリポジトリの整合性を保証したい場合は、HEAD
プッシュされているもののタグを作成して署名し、上流のリポジトリがあなたを正確にではなく、 「プッシャー」、しかしプッシュされたものを検証するもの
プッシュがSSH経由で行われている場合は、USER
環境変数を使用できる可能性があります。(もちろん、これはローカルプッシュでも機能します。)これは、もちろん、SSHログインに使用されるユーザーがシステムのユーザーごとに異なるかどうかによって異なります。たとえば、gitoliteの場合はそうではありません。(ただし、gitoliteはGL_USER
プッシャーを識別するために環境変数を定義します。)HTTPの場合、REMOTE_USER
環境変数を試すことができます。
更新:一般に、この情報は、コミットの作成者やコミッターと比較してそれほど興味深いものではありません。たとえば、GitHubが特定のプッシュを行ったユーザーを表示することは、私にとって常に驚きです...