[GitBucketで学ぶバージョン管理] #07 - プルリクエストしてみよう

前回はおさらいをしつつ、自分だけの実験室であるブランチをmasterとは別に作成しました。そして実験室で行った実験の成果をGitBucketへアップロード保存するところまでやってみました。今回はそうしてつくられた実験の成果をどうするかについてお話ししていきます。


実験の成果を無駄にしないために

みなさんも「もっとこうしたほうがいいのに」ということで実験的なことをやってみると思います。それを安全に行うために実験室を独自に用意して、その中で実験の成果が出たとしましょう。それをメンバーに見てもらうためには共有しているリポジトリへアップロードするのでしたよね。


では、前回最後に見ていただいた画面に戻ってみましょう。変更内容がmasterとあなたの実験室であるtest1リポジトリとの比較で表示されていました。そして、この中に緑色のボタンで「Create pull request」というのがありましたよね。メッセージとして「変更した内容を議論したりレビューしたりしてね」とありました。今回はここからいきたいと思います。


プルリクエストとは

ボタンに書いてあったものは「プルリクエストを作成する」という意味です。はて?プルリクエストって…ウェブ上では時折、技術系のブログで見かける言葉でありますが、どういうものなんでしょうか。例えば、こうした内容を思い浮かべてください。


クウガ:「部屋のカーテンをベージュから少し青いものにしてみたんだけど、どうかな?」

アギト:「あれ?どうしたの?変えてみたの?」

クウガ:「うん、どうかな?落ち着いた雰囲気もいいけど、爽やかな雰囲気にしてみようと思って」

アギト:「うーん、どうだろう…いま冬だしね。ちょっと寒い雰囲気になるような」

クウガ:「え?でもそこまで青くないし」

リュウキ:「いやー、もう少し緑系のほうがよくね?これから春が来るんだし淡いピンクとか」

ファイズ:「うん、青系でいいんじゃない?爽やかだよ」

アギト:「そうだね…じゃあこのままいこうか」

リュウキ、ファイズ:「いいよ」


この会話のうち、クウガさんがカーテンの変更を提案しています。この部分がプルリクエストです。自分の行った変更をみんなの変更にしてほしいということです。

その後、アギトさんは変更の理由などをヒアリングしつつ、他のメンバーであるリュウキさん、ファイズさんの意見も聞いたうえでクウガさんの変更を受け入れることにしました。この流れの中で、アギトさんは部屋のバージョン管理を集中的にマネジメントする役割を果たしています。そこで、クウガさんはアギトさんへ自分の行った実験的な変更について受け入れを求めたということです。


プルリクエストしてみよう

ここでは話の都合上、一人でもやりとりをすることになります。ですので、ちょっと自作自演的にアギトさんユーザーをつくってみてください。「root」ユーザーでGitBucketへログインしてアギトさんをつくってください。

アギトさんが作成されたらログアウトして自分のユーザーでログインしなおします。そうしたらmyrepoページの画面右側にある工具のアイコンがある「Settings」をクリックしてください。表示されるリポジトリの設定で、画面左側のメニューから「Collaborators」をクリックします。

表示される「Manage Collaborators」から入力欄へ「agito」と入力すると候補が表示されますので「Add」をクリックしましょう。

これでmyrepoはアギトさんと一緒に利用することができるようになります。

ではプルリクエストしてみましょう。

前回と同様にmyrepoページの緑色ボタンからブランチ間の比較をするページに移動します。そして、右側のプルダウンでtest1ブランチを選択してください。プルリクエストをつくるための緑色のボタンが表示されたでしょうか?

では「Create pull request」をクリックしましょう。すると次のようなフォームが表示されるでしょう。

「Title」はこのプルリクエストのタイトルを入力します。そして「Write」タブにある「Leave a comment」と表示されている入力欄へ次のようなことを書きましょう。

  • なぜこの変更をおこなったか
  • どんな変更をおこなったか
  • この変更によってどんなことが起きるか

ということで、書いてみたいと思います。今回は「second.html」というファイルを「いいんじゃないかな」ということで追加しましたよね。

こんな感じに書いてみました。実際にはもっと詳細に議論したい内容などを書いたほうがよいでしょう。なお、スクリーンショットなんかも埋め込むことができます。入力欄へファイルをドラッグアンドドロップすると自動的に埋め込まれます。ところで、この入力欄に「#」記号なんかが書かれていますが、これは「マークダウン」という書き方です。こうしておくと自動的にHTMLにしてくれるので「###」と書いたところは見出しになっているはずです。「Preview」タブをクリックしてみてください。きちんと見出しになっていますよね。

それでは緑色の「Create pull request」ボタンをクリックしましょう。これでプルリクエストがされました。myrepoページへ戻ってみると、画面右側の「Pull request」に1とバッチがついていると思います。

ここをクリックしてみましょう。先ほど行ったプルリクエストが一覧として表示されています。


プルリクエストをレビューする

さて、自作自演お疲れさまでございます。今度はアギトさんでログインしなおしましょう。アギトさんがログインしたばかりの画面に、さきほどのプルリクエストが表示されていると思います。

ではここからリンクをクリックしてプルリクエストの内容を見てみましょう。プルリクエストを作成したときと同じように内容を見ることができると思います。ではこのプルリクエストにアギトさんとしてコメントしてみることにしましょう。画面を下のほうへスクロールしていくと、プルリクエストのときと同じような入力フォームがあると思います。

ここへ何かしらコメントを入れます。内容が手放しで良ければ「いいね!」でもかまいませんし、「いやー、ちょっとキビシイっすね…スタイルシートないんスか」などでもいいでしょう。

プレビューはプルリクエストのときと同じです。コメントが書けたら緑色のボタン「Comment」をクリックしましょう。

また、プルリクエストの右側に歯車のマークがあることに気づくでしょうか?プルリクエストについてわかりやすくするために、補足としていろいろ情報を付け足すことができます。例えば、「Label」はラベルです。「bug(不具合)」「duplicate(被ってる)」「enhancement(機能追加)」「invalid(間違ってる)」「question(質問)」「wontfix(スルーします)」です。

ラベル付けしておくと、あとから探しやすくなります。今回の内容だと、「wontfix」してもいいのですが、せっかくなので「enhancement」にしておきましょうか。


ところで、もちろんプルリクエストを作成したユーザーもコメントをすることができます。

このコメントの応酬はすべて中央のデータベースへ保存されますので、レビュー履歴としても便利です。さらに、コメントした内容は編集したり削除することもできます。各コメントの右上に鉛筆アイコン、×アイコンがあります。


プルリクエストを受け入れる

最後にレビューや議論の結果、このプルリクエストが受け入れられたとしましょう。そうしたときにmasterブランチへ変更を取り込むことになります。このことをマージと呼びます。マージは支流を本流へ合流させる作業のことを言います。コマンドからも実行できるのですが、ずっとスクリーンショットに移りこんでいるメッセージが気になっていた方はお察しのとおりです。

メッセージがずっと出てましたよね。「マージを自動的に行うことができます」ですって。なぜこのようなメッセージが表示されているかはおわかりでしょうか?それは今回ファイルを追加したのみでしかもどこにも依存していません。そのままファイル追加を取り込んでも影響がまったく出ないからです。

ということでマージしてみましょう。緑色のボタン「Merge pull request」をクリックしましょう。マージのときにも「なぜマージしたか」「どんな変更をマージしたか」などのコメントを残すことができます。コメントを残したら「Confirm merge」をクリックしましょう。

するとプルリクエストのタイトル付近についていた「Open」という緑色だったラベルは「Merged」という青いラベルに変わりました。

ではmyrepoページに戻ってみてください。masterブランチですが、追加した「second.html」ファイルがファイル一覧に含まれていると思います。

最後に

今回はプルリクエストで実験の成果をmasterブランチへ合流してもらうという流れを見てきました。実際には合流させるために解決しなければならないことが発生するのがふつうです。次回はそうしたやりとりの方法についてみていきたいと思います。

もんが(なるーらぼ)

個人でプログラミングの学習サイト「なるーらぼ」を運営しています。
https://nalu-labo.amebaownd.com
PowerShell入門の電子書籍2冊も出版しています。
http://www.amazon.co.jp/dp/B017LJOCJ2

なるーらぼ

ごく自然にプログラミングを楽しむことができる世界をつくるお手伝いをしています

0コメント

  • 1000 / 1000