gitのこと
このgistはstfuawsc_itg advent20日目の記事です
すみません、風邪で一日遅れの投稿です。
子どもが通う保育園では胃腸炎が流行っており、戦々恐々とする毎日です...
要約すると
仕事でgit-flow導入しており、そこそこうまく回っているという話です
自分が関わってきたプロジェクトでは未だにvssを使っているところが多く、何とかしたい焼き尽くしたいという思いがずっとありました。
vss以外のメジャーなvcs(subversion, mercurial, git)と一通り使ってみましたが、githubの勢いもあってこれからはgitなのかなーと考えたのが2011年頃。
幸い翌2012年に新規プロジェクトに関わる機会があったので、gitを導入してみて使い始めました。
vssを使い続けることのデメリットはあえてここで挙げないし、枯れていると見るか打捨てられた技術と見るかは人それぞれだと思うのですが、MSが一部のコードベースをgithubに移していることからもgitを使うのは一つの流れなのかな、と考えます。
まあgit≠githubではあるのですが。
*subversionがgithubに移行したというニュースを見た覚えがあったのだけど、エイプリルフールネタでした
2012年のプロジェクトで一通り使ってみて便利だなと思う反面、周囲に広めるにあたって下記がネックになるかなと感じました。
- CUIベースである
- コマンドがたくさんある
翌2013年に別の新規プロジェクトに関わることになったので、ここでもgitを使うつもりでした。
が、上記をどう解決するか悩んでいた時に、丁度タイミングよくgitのGUIツールであるsourcetreeのwindows版がリリースされたのでした。
宣伝するつもりはないのですが、主要な操作がボタン化されていることやrepositoryの状態が見えることから、割と初めて触る人にも説明しやすく、自分的にはしっくりくるツールだった訳です。
あとはここなど、初心者向けに丁寧に説明されたサイトがそろってきたこともあって、ノンプログラマの方にも使ってもらいやすい?状況になってきた、というのもあります。
そんな訳で2013年のプロジェクトもgitでまわし*、リリースを迎えることになりました。
幸い残りのお仕事はまだまだ沢山あって、リリース後も追加開発案件目白押しという状態。
* 2012年のプロジェクトはどうなったかって?お察しください
つまりリリース後の保守運用をしながら、機能追加開発を行うということで、そういえばちょうど良さげな運用フローがあったな...と思い出したのがgit-flowです。
幸いsourcetreeにもメニューがあり、導入は楽でした。
あとは各ブランチ使い分けのルール決めですが、概ね以下のルールで運用しています。
- master: 基本的に直接いじらない
- develop: 基本的にいじるメインブランチ、リリース前の最新が存在する状態
- feature: 機能追加の際に作成
- hotfix: 緊急でバグ修正必要だけどdevelopは結合試験中でリリースできない状態の時に作成
- release: 本番リリース時に作成
git-flowを使ってみようとして調べ始めたころ、ちょうどgithub-flowのことも知り、どうなのだろうと思ったのだけど、導入を見送りました。
理由は
- CIできてない
- プルリク駆動が前提となっており、そういう文化がまだ根付いていない
特に後者についてはなんとかしたいですね