29
19

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

🎉GitLab11.0でSquash&Merge機能がCommunity Editionで使えるようになります!!🎉

Posted at

はじめに

世間ではGitHubがMicrosoftに買収されることが決定されたことでなおさらGitLabも注目を浴びていますね。1
今日はそんなGitLabが従来はStarter以上2じゃないと使えなかったSquash&Merge機能が11.0からCommunity Editionで使えるようになるので、一足先にTrialを使ってどんなものなのか確認してみようと思います。

いつ頃リリースされるの?

こちらによると、6/22の11.0のリリースで適用されるようです。
image.png

Squash&Mergeとはどんな機能なのか

公式の解説はこちら
平たく言うと、いくつかのCommitを1つのCommitとしてMergeすることができる機能になります。

どんなふうに使うの?

仮にサーバの設定ファイルが管理されているリポジトリで
新しく通信先が増えたため/etc/hostsにhoge.comにつながるような設定追加をしたいとします。
このファイルをpushしたGitフローが以下とします。
Untitled.png

  1. hoge.comを追記してWIPでMRを発行
  2. レビュー中に実はapi.hoge.comもhostsに設定しないと駄目だと指摘される
  3. api.hoge.comをhostsに追記
  4. WIPを解除してMerge

肝なのは、本来はhostsファイルの修正は1つのコミットに纏められるのに、
WIPのレビューで指摘されて2回コミットしてしまっている点です。
これは、レビューする人や後にgit logを見る人はコミットの粒度が細かくなりすぎて見づらくなってしまいます。
(※会社やチームによってはgitのコミット粒度は様々なのでこれが絶対的に悪いわけではありません)
こういうシチュエーション時に、MergeRequest時に1つのコミットに見せることが出来るのがSquash&Merge機能というものになります。

実際に試してみる

では、Issueを切るところから実際に上記フローで試してみます。

  • Issueを切る
    image.png
  • Issueからブランチを作成
    image.png
  • 赤枠を押してWIPなMergeRequestを作成
    image.png
    Mergeボタンが押せないWIPなMergeRequestが作成される
    image.png
  • レビューコメントを追記してみる
    image.png
  • 指摘の通り再度コミットしてMergeRequestに2つのコミットがされたことを確認
    image.png
  • MergeRequestの「Squash commits」にチェックを入れる
    image.png
  • Mergeした後にMerge元の1-fix-hostsブランチを確認してみる
    image.png
  • Merge先のmasterブランチではコミットが集約されていることを確認
    image.png

Merge先のMergeCommitから纏める前の詳細コミットを見たい場合

場合によっては、Merge先からこの1つに集約されたコミットはどういう経緯でコミットされたのか確認したい場合があります。
例えば、今回のhostsファイルは実は最初はhoge.comのIPを1.1.1.100で設定したけど、うまくいかなくて1.1.1.1に修正した場合は、纏まった後のコミットからは試行錯誤の経緯が読み取ることができません。
コミットログにどこまで意味を持たせるかは会社やチームによって色々ありますが、
一つの考え方としてはコミットログからも過去の経緯がわかるようにしたいといった場合に有効です。

  • masterブランチのMergeCommitを確認し、「See merge request !X」を押す
    image.png
  • 元のブランチのMergeRequestが確認できるので、ここのCommitsから確認する
    image.png

最後に

簡単にではありますが、GitLabの今後追加される一機能についてレポートしてみました。
GitLabでは現在は有償機能であっても、GitLabのコアに入れたほうが良いよねっていう場合は今回のようにIssueで意見を募集して取り込まれることが多々あるようです。
今回は言及していませんが、GitLabはCommunityEditionであってもIssue管理、ブランチ戦略、CI/CDの機能などなど本当にたくさんの機能に溢れています。
ぜひGitだけの機能ではなく、GitLabの全機能を使い倒すつもりで色々試されてみてはいかがでしょうか😊

注釈

  1. GitLabへのインポートが普段の10倍に急増、GitHubの買収報道で@Publickey

  2. Feature Comparison@GitLab

29
19
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
29
19

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?