0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめてのアドベントカレンダーAdvent Calendar 2023

Day 16

チームのgit-flowを定義したので紹介する話

Last updated at Posted at 2023-12-15

はじめに

git-flow定義をした話を紹介します。

元々会社の開発部では、git-flowが策定されていませんでした。
正確にいうと、開発部全体の方針が決まっておらず、サービスごとに
「こんなかんじだな」という方針がありますが、みんなバラバラでした。

会社にそろそろ決めてほしいなあ・・と思い、打診してもらっていたのですが、はや一年・・・。

いつになったら決まるんだ!!!ということで、うちのチームはうちのチームで策定することにしました。
(ここで流派が生まれてしまう)

元々、チームではgit-flowすらもなくて、master直PUSHも結構ありました。
それでいいのかい?!っていうツッコミどころは多々あります。
後に、マージリクエストルールも私が定義することになるわけですが・・。

どんな〜やつにしたか

大体これと一緒ですね。
自分のチームにデザイナさんはいないので、デザイナさん向けのブランチなどは特に用意せず。
master, develop, featureという単位にし、masterの直接PUSHは禁止。
場合によってはhotfixを作るぐらいで。
git-flowがそもそもなかったので、慣らしから始めました。

ただ、gitのコミット、MR、どのブランチから派生して、みたいなのも大事なんですが、そもそも
コミットや、ブランチ名、MRのお作法などがカオスだったので、そこの運用をもっと重要視しました。

ブランチ名のルールも定義することにしました

元々は、

20231201_fix_hogehoge_for_win

みたいなテキトーなネーミングでした。時系列で見やすいっちゃ見やすいですけど、ざっくばらんにブランチが乱立、どんな規則名なのかもわからないし、酷いときには個人名が入ってることもあります。
面倒なので、JIRAのチケットの名前一律にすることにしました。
これによるメリット・デメリットは以下です。

メリット

  • チケットに紐づいているため、なんのタスクであるか明快
  • ブランチの名前のセンスを求められない(脳筋命名)

デメリット

  • 同じような名前なので、チケットIDを意識しないと間違える
  • 名前を見ただけだとなんのブランチかは判断付かない

commit prefixを定義

commit時において、どんな修正をしたのか、明確になるようにprefixを付けてもらうことにしました。

prefix 説明
ci ビルド関連
docs ドキュメント修正
feat 機能追加
fix バグ修正など
perf パフォーマンス対応
refactor リファクタ
style 誤記修正、スペルミス修正等(ソースコードの挙動に影響がないもの)

コミットをするときも、今までいた会社でよくないなあ・・・って思ったコミットコメントが

update

っていう、こういうコミットですね。
なんの対応したのか全然わからんっていう。
もっと文章で書きなさいよ、っていうツッコミまちのコミットありますよね。
ああいうコミット文章だけは避けてもらうことにしました。

MR時のコメントのprefix

これを入れることで、どんな意図でツッコミをしてくれているのか、明確にします。

prefix 説明
imo 私の意見では。in my opinion
must 必須でやってもらえると
want やってもらえたら嬉しい
nits nitpick 細かい指摘だが
q 質問
typo スペルミス
tbd to be determined 後で決める

MR時のテンプレート

これも一応用意しました。
あったほうが楽かな〜って部分があったので。
ただし、あったほうがいいなというのは、どちらかというと自動的なレビュワー指定ですね。

テンプレート作成の方法自体は、gitlabかgithubによってお作法は少し違いますが、
テンプレートの中で、
@ほげほげ のように記述すれば、メンションされてレビュワー指定が自動的にできるようになるので便利です。
ただし、チームが流動的に変わってしまう場合だと少し難儀かな。

運用してみて

そこそこルール化したので、masterへのpushしちゃう文化に少し染まってたけど、大丈夫かな?ってのはありましたが、masterへの直pushを設定で禁止することで、MRを否が応でも出さないといけないものにしました。

これの場合なるはやで対応するのが難しくなる部分は、まああります。
ただ、コードの品質の担保をしたり、チームでのMR、それに対してのツッコミ、を活発化する上ではなくてはならないものかな〜と。
そもそも、誰も見てくれてないのに、masterにpushって、怖いでしょ?っていう布教が必要というか。

導入はしてよかったなと思います。
次は、コーディング規約に対して、自動的に設定できるツール選定や、仕組みをやりたいところですね。
で、MR出す前に、そこがciで自動チェック入るような感じにしたいかなあ。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?