web-dev-qa-db-ja.com

Githubのプルリクエストを受け入れるアクションは、競合状態に対して脆弱ですか?

Githubでは、すべての人(アリスと呼ぶことにします)がプロジェクトをforkして変更を加え、それらの変更をプルリクエストとしてプロジェクトオーナー(Bob)に送信することができます。仕様に準拠しており、ウイルス*が含まれていないことを確認してください。

ボブがプルリクエストを受け入れる前に変更(コードスタイルなど)を希望する場合、アリスに変更を依頼するコメントを付けることができ、アリスはそれらの変更を行う可能性が高く、アリスのフォークにコミットし、その時点で自動的にコミットします。プルリクエストの一部として表示されます。

ここで、有益な変更を含むフォークを作成してプルリクエストを送信する悪意のある人物(Malice)がいて、Maliceがボブがそのプルリクエストをいつ見るかを正確に認識していて、ボブが約5分かかるとしたらどうなるでしょうか。新しいコードを確認します。 その後、Maliceがボブがページを要求してプルリクエストを表示することと、ボブが「承諾」ボタンを押すこととの間に悪意のあるコミットを行う可能性はありますか?

*理想的には、これが起こります。私たちは、ボブが慈悲深くインテリジェントであると想定し、これを彼の最善の能力で適切に行いますが、この特定の起こり得る脆弱性を認識していません。

8
Shelvacu

いいえ、Githubは脆弱ではありません。

私はこれを とても親切な友人 でテストして、物事をより速く進めるようにしました。これが試みられたとき、githubはコミットのリストをライブで更新しました。リストが更新される前に[Accept]ボタンをクリックした場合、githubは次のメッセージをスローします。

MERGE ATTEMPT FAILED: Head branch was modified. Review and try the merge again

2
Shelvacu

プルリクエストはGitHubに固有のものではありません。 gitの一部です。

プルリクエストを受け入れると、マスターにリビジョンがマージされます。したがって、GitHubにgit merge deadbeef、彼は実際にgit merge deadbeefではなくgit merge HEAD

0
Antoine Pinsard