6

著者、コミッター、プッシャーはGitで別の人物になることができますが、gitはプッシャーの情報をログに保存しませんでした。

だから、どうやってそれを手に入れるのですか?

4

2 に答える 2

7

あなたはそうしない。アップストリームリポジトリは、誰がコミットを提供しているかについては何も想定していません。電子メール、USBキーにコピーされた差分パッチ、およびその他のさまざまな転送プロトコルを介して行うことが
できます

これらのプロトコルの一部(ssh、https)には、必要な情報がログに含まれている場合がありますが、次のようになります

  • これはGitとは何の関係もありません
  • これは、ログレベルが適切に設定されていることを前提としています。
  • Gitoliteの場合でも、リポジトリに登録されている公開sshキーの名前は、実際の名前とは関係なく、任意の名前にするgitolite-adminことができます。

Linusが述べているように(「一部のオープンソースプロジェクトはプルリクエストを受け入れないのに、パッチファイルのみを電子メールで送信するのはなぜですか?」):

github IDはランダムであるため、プルリクエストは署名されたタグであると予想されます。これにより、問題の人物のIDを確認できます。

したがって、誰かがコミットをプッシュするときに、すべてのリポジトリの整合性を保証したい場合は、HEADプッシュされているもののタグを作成して署名し、上流のリポジトリがあなたを正確にではなく、 「プッシャー」、しかしプッシュされたものを検証するもの

于 2012-07-01T09:26:35.713 に答える
5

プッシュがSSH経由で行われている場合は、USER環境変数を使用できる可能性があります。(もちろん、これはローカルプッシュでも機能します。)これは、もちろん、SSHログインに使用されるユーザーがシステムのユーザーごとに異なるかどうかによって異なります。たとえば、gitoliteの場合はそうではありません。(ただし、gitoliteはGL_USERプッシャーを識別するために環境変数を定義します。)HTTPの場合、REMOTE_USER環境変数を試すことができます。

更新:一般に、この情報は、コミットの作成者やコミッターと比較してそれほど興味深いものではありません。たとえば、GitHubが特定のプッシュを行ったユーザーを表示することは、私にとって常に驚きです...

于 2012-07-01T09:26:27.230 に答える