diaryこのブログは移転しました。この広告は、90日以上更新していないブログに表示しています。iOSTweetはじめにみなさまのプロジェクトではどのようにバージョン管理を行っているでしょうか。ここでのバージョン管理とは具体的にはどのようなブランチを作ってどこにマージするか、リリースはどのように進めるかといった事柄を指しています。flowというフローを中心にして話していきたいと思います。flowが個人的には一番しっくり来ているのでオススメしたいです。有名なフローgitは分散型のバージョン管理システムとして一世を風靡しており、いまや事実上のデファクトスタンダートです。名前のとおり分散している(ローカル・リモートが明確に分かれている)ことやブランチ・コミットの編集も非常に容易で柔軟性が非常に高いです。一方でその柔軟さゆえにルールをきちんと決めなければ各個人のフローが大きく異なって混乱を生んでしまうこともあるでしょう。いった2つフローが提唱されてきました。それぞれについて簡単に見ていきます。flowは古参なバージョン管理戦略の一つです。cheatsheetでこのフローを実現するためのコマンドも配布されていたりします。flowでは以下のようなブランチを使用します。リリース済みのバージョンをここで管理する。タグ付けもこのブランチで行う。開発の中心となるブランチ。Requestのマージ先はここ。リリース内容に問題があった場合に緊急対応を行うためのブランチ。リリース準備用のブランチ。開発作業を進めるためのブランチ。flowのメリットは管理が他のどのフローよりもしっかりしていることだと思います。役割ごとに明確に使うタイミングや意図が分けられているためコミットツリーを見ることでどのように作業が進んだかを俯瞰して把握しやすいでしょう。flowはかなり複雑であると言えるでしょう。ブランチの種類が多いことやその開始地点やマージ先が多岐にわたっています。毎回上記の図を見ながら作業できれば良いですが実際にはそうはいきません。一度目を離すとどれが何を表していたかを思い出すことは至難の技でしょう。flowを見ていきましょう。flowは他のどのバージョン管理戦略と比較しても最も単純でしょう。端的に言うとmasterブランチとそれ以外、という2パターンの種別でブランチを管理します。masterから派生したブランチで作業をしてmasterにマージする、ただそれだけです。(図中のオレンジ色のブランチはrebaseした方が良いといった話もあるかもしれませんが今は細かいところは触れません。)メリット特にサーバサイドとの親和性が非常に高いように思います。CIと絡めて「masterにマージするたびにデプロイ」といった運用も取れるので、うまくすればリリース作業そのものからほぼ解放されそうです。デメリットリリースのタイミングを調整したい場合は不向きではないでしょうか。アプリの場合は1つの作業単位ごとにリリースをするとも限らないのでどのブランチでリリース準備をすれば良いのか迷ってしまいます*1。サーバサイドであっても例えば環境(ステージング環境、QA環境、広告配信テスト環境などなど)を分けてデプロイしたい場合はデプロイタイミングとブランチとの結びつきが不明確になってしまうでしょう。リリースに必要なブランチ」です。masterブランチでリリースに向けた作業が終わった段階で上記図のようにproductionブランチやpre-productionブランチにマージを行いリリースの調整やリリース作業を行います。Requestをする形で気軽に行いましょう。メリットリリースに対してかなり柔軟に対応できます。productionブランチのように徐々に本番に近づけていくような形もブランチで可視化しながら進めることができます。環境が増えるようであってもブランチを一つ足すだけで済むでしょう。いった環境やリリース段階に応じた柔軟な運用ができます。flowと同じく常にmasterブランチです。Requestを送ってしまうのですが、そうした心配もかなり少なくなります。そのほか常にリリース関連のブランチは常に存在しているのでそれぞれに応じたCIも設定しやすいでしょう。flowについて他の戦略と比較しながら紹介しました。flowはアプリの開発においても適合しやすいのではないかと思います。flowをおすすめしましたが当然のことながらバージョン管理戦略に正解はないです。実際の現場でのリリースや開発の進め方をよく考えた上でどのフローを選ぶか、選んだフローをどうカスタマイズしていくかはその時々考える必要があるでしょう。flowが合うと思いますTweet広告を非表示にする関連記事2015-07-25なぜJava以外のプログラミング言語でAndroidアプリを作ろうとするのかこにふぁーさんのツイッターでこんな発言を発見しました。pushコマンド」に続きGitネタです。pushコマンドid:koogawaさんのgitの記事を読みました。SKILLS」が読める。SKILLS」が読める。flowが合うと思います雑談を通してエンジニアとしての不安を取り除く一日一善エンジニアなぜJava以外のプログラミング言語でAndroidアプリを作ろうとするのか月別アーカイブリンクQiitaslideshareFacebookはてなブログをはじめよう!shoma2daさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。