クリーム色の背景、色付き表示、高コントラスト、大きな文字のほうが読みやすいですか?配色と文字を選ぶと、すべてのページに一度で反映されます。

無料レッスン

プルリクエストとコードレビュー

このレッスンのあとで: 変更をプルリクエストで提案し、他の人の変更をレビューすることができる。

55分のレッスンコマンド12件Git と Gitea のラボ:自分専用の Git サーバーでクローン、コミット、プッシュを学ぶ

プルリクエストとは何か

プルリクエストは、ブランチの変更を main に取り込んでほしい、と他の人に頼む仕組みです。取り込む前に、他の人が変更を読んで、意見を書けます。

レジの税率を直すとします。1人で直して main に入れると、間違いがそのまま本番に出ます。もう1人が読めば、その前に気づけます。

このレッスンのゴール

メモ

変更をプルリクエストで提案し、他の人の変更をレビューすることができる。

大事な言葉

ことばいみれい
プルリクエストブランチの変更を取り込んでほしいという依頼と、その話し合いの場(pull request)
レビュー他の人の変更を読み、意見を書くこと(review)
承認この変更を取り込んでよい、という返事(approve)
差分2つの版の違い(diff)git diff main reduced-tax
ブランチ保護main に直接 push できないようにする設定

学生が入力するセルは、このプレビューでは空白です。

プルリクエストは4つの手順で進む

手順は4つです。ブランチを作って変更し、push します。次に、Gitea の画面でプルリクエストを開きます。他の人がレビューし、直す点があればブランチに足します。承認されたら、マージします。

提案する変更を用意する

練習用に、税率を直す変更を作ります。名前をまだ教えていないなら、レッスン1の2行を先に打ってください。

まず src と tests の2つのフォルダを作ります。main に、計算の関数と、そのテストを置きます。

リポジトリを作る

コマンド
git init -q -b main review

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

フォルダを2つ作る

コマンド
mkdir -p review/src review/tests

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

計算の関数を書く

コマンド
printf "def tax(price):\n    return price * 1.1\n" > review/src/shop.py

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

テストを書く

コマンド
printf "from shop import tax\n\ndef test_tax():\n    assert tax(100) == 110\n" > review/tests/test_shop.py

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

まとめてステージに置く

コマンド
git -C review add .

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

main の最初のコミット

コマンド
git -C review commit -q -m "ショップの計算を始める"

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

提案は、ブランチの上で作る

reduced-tax というブランチで、税率を8%に直します。関数とテストを、同じ変更で直すのが良い習慣です。

sed -i は、ファイルの中の文字を置き換えるコマンドです。

ブランチを作って移る

コマンド
git -C review switch -c reduced-tax

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

関数を直す

コマンド
sed -i 's/1.1/1.08/' review/src/shop.py

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

テストを直す

コマンド
sed -i 's/110/108/' review/tests/test_shop.py

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

変更をコミットする

コマンド
git -C review commit -q -am "軽減税率に合わせる"

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

レビューする人が最初に見るもの

レビューする人は、まず「何が入るのか」を見ます。log main..reduced-tax は、取り込まれるコミットの一覧です。

diff --stat は、変わったファイルと行数の要約です。変更が小さいほど、読みやすく、間違いを見つけやすくなります。

取り込まれるコミット

コマンド
git -C review --no-pager log --format="%s" main..reduced-tax

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

変更の大きさ

コマンド
git -C review --no-pager diff --stat main reduced-tax

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

レビューでよく使う確認項目

確認することなぜ
題名が短く、何をするかが分かる一覧で、内容がすぐ分かるため
変更が大きすぎない大きいと、見落としが増えるため
自分以外の人が承認している1人の思い込みを防ぐため
src を変えたら、tests も変えている直したことを、確かめるため
パスワードなどの秘密が入っていない履歴に入ると、消せないため

学生が入力するセルは、このプレビューでは空白です。

よくある間違い

注意

レビューを「人を責める場」だと思う人が多くいます。目的は、変更をよくすることです。「ここが分かりません」「こう直すのはどうですか」と、変更について書きましょう。

このラボとソースについて: Git と Gitea のラボ:自分専用の Git サーバーでクローン、コミット、プッシュを学ぶ

授業で使いますか?このモジュールを学生に割り当てると、教員用ガイド、自動採点つきの課題、学生ごとのラボを使えます。