git の develop ブランチは必要なのか、またはリリースtagについて

個人的にタイムリーな話題だったので、備忘録的にまとめます。
git
27
songmu @songmu

feature branchか、feature flagかっていうのは実は結論のない話なんだろうな、とは思ってる。僕はfeature branchに慣れすぎてしまったけど

2019-10-26 15:32:59
Kazunori Otani @katzchang

Gitのリポジトリ/ブランチ戦略で確実に言えそうなのは、「分岐した状態をできるだけ短くしよう」で、それを実現するためにはじつはGitだけの問題じゃなかったりするので、みなさんがんばっていきましょう。

2019-10-26 18:03:42
小野マトペ @ono_matope

Githubはfeatureブランチをmasterにマージする前にデプロイしてるのか…下手に真似すると怪我しそう。 / “中の人に聞いたGitHub flowの本当の使い方 - Qiita” htn.to/4oW5GSrJJv

2019-10-27 03:14:50
小野マトペ @ono_matope

モチベーションは理解できたが、developとmasterがまるで別物になってしまうのが良くない。任意のfeatureブランチを検証環境にデプロイする仕組みを整えた方が建設的ではないか。 / “GitFlowをやめて本番リリースが楽になった話 - Qiita” htn.to/2XcjhTZczy

2019-10-27 03:33:12
小野マトペ @ono_matope

やっぱfeatureの検証(QA)はfeatureブランチからるべきだな。developerやmasterはテストするとこではないぞいという

2019-10-27 03:43:47
songmu @songmu

最近はdevelopブランチは要らないんじゃないか、と思うようにはなってきてて、developからmasterにマージされたら自動deployされるのではなくて、masterにfeatureブランチ直接マージしていって、masterにタグが打たれたら自動deployという形が良いのではないかと思いつつある

2019-10-27 11:11:00
songmu @songmu

何故かというと、developからmasterにマージするとコミットハッシュが変わってしまうので、そこでまたテストとビルドが走ってしまうのは時間の無駄だし、動作確認を事前にdevelopでやっている場合、別のハッシュでリリースするのであれば、その確認の意味が薄れてしまうというのもある。

2019-10-27 11:20:53
ymmt @ymmt2005

> masterにfeatureブランチ直接マージしていって、masterにタグが打たれたら自動deploy neco の CD の片方がこれ。tag -> CI -> deb package build -> pull で自動デリバリ

2019-10-27 11:19:17
songmu @songmu

ここに対する障壁としてgit-pr-releaseの便利さがあって、pull request上でリリース差分を確認できたり、pull requestをリリース証跡にできるのは有用なんだよな。

2019-10-27 11:24:51
songmu @songmu

GitHubはあるコミットハッシュに対するRelease Request(Tag Request)みたいな機能を提供して欲しい。 twitter.com/songmu/status/…

2019-10-27 11:26:15
songmu @songmu

git-pr-releaseに代わる、Release issueを登録できるツールがあれば良いのかねぇ

2019-10-27 11:29:16
songmu @songmu

pull requestが便利だから、release engineeringもそれでやってしまっているけど、Git本来的にはそれはtagでやるべきなんだろうなー

2019-10-27 11:35:53
たな @side_tana

tagでリリース絶対いいな(テストが2回走る問題辛いよねという立場です)

2019-10-27 11:36:16
songmu @songmu

@side_tana あと、ステージングで動作確認したものと、本番に出ていくものが、厳密には異なるっていうのもちょっと気持ち悪いよね

2019-10-27 11:40:20
songmu @songmu

多分コミットハッシュでビルド作るのもイマイチという話もあって、例えばgit archiveのtar玉のハッシュ値をビルドのURIに使えば、masterブランチにマージしても同じ成果物を使わせることができる、とかはある。

2019-10-27 11:49:43
らっきー @lucky_rand0

@songmu @0918nobita 質問です。developブランチなしの運用の場合、hotfixを切りたいときはどうすれば良いとお考えですか? masterの最新ではなく、タグ打ちされたところから切れば良いのでしょうか?

2019-10-27 12:00:36
songmu @songmu

マージコミット作りたい派ではあるんだけど、メインラインにffマージできるのであれば、テストとビルドをやり直す必要はないってのはあるんだよな

2019-10-27 12:02:04
songmu @songmu

@ara_tack @0918nobita 普通にfeatureブランチと同じようにブランチ作ってマージしてリリースするか、masterに直接コミットしてテスト通って動作確認終わったらタグ打ってリリースで良いのではないでしょうか。masterがリリースtagより進んでいて、リリースしたくないものがある場合は、(続きます

2019-10-27 12:08:23
songmu @songmu

@ara_tack @0918nobita 一旦revertしてしまうか、前回のリリースタグ地点からブランチングして、そこで修正を作ってそこにタグを打ってリリースした後にmasterにマージすると、などが考えられると思います。ただ、masterにマージしたのにリリースできないものがあるという状況をそもそも作らない方が良いとも言えます

2019-10-27 12:10:21
songmu @songmu

hotfixブランチって、複雑なブランチングルールの上で生まれざるを得なかったワークアラウンドルールみたいなところがあって、本来要らないものでもあるとも思う

2019-10-27 12:11:57
らっきー @lucky_rand0

@songmu ありがとうございます。 今のチームではリリース前にまとめて動作確認しているので、不具合修正だけ動作確認してすぐに出したい時はどうすべきか気になって質問いたしました。masterにリリースできないものがあるのがよくないという話は同意するとともに耳が痛い話でした。

2019-10-27 12:23:15
songmu @songmu

featureブランチをffマージしつつ、いざとなったらそこで入った複数のコミットをまるっとrevertできる、みたいな機能もGitHubにあると嬉しいのかなぁ

2019-10-27 12:23:36
柴崎優季 @shibayu36

@songmu develop作らない時、hotfixの難しさはあるかもしれないですね

2019-10-27 12:25:47
songmu @songmu

@shiba_yu36 確かにその難しさはあって、別のリプでも回答しています。ただ、緊急修正はhotfixがあろうが無かろうが難しい問題で、hotfixブランチはdevelopを並走させるからこそ生まれてしまった徒花でもあると思います。

2019-10-27 12:28:53