Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
マジカルsvnとキュアgit
Search
Takafumi ONAKA
PRO
March 22, 2013
Technology
0
9
マジカルsvnとキュアgit
2013-03-22 第5回テックヒルズ『Go to Git !』~さらばSVN~
Takafumi ONAKA
PRO
March 22, 2013
Tweet
Share
More Decks by Takafumi ONAKA
See All by Takafumi ONAKA
気づけばこうなる運用 ~運用現場の現実と理想~
onk
PRO
0
34
プラットフォームを作る、プラットフォームを変える
onk
PRO
0
18
強いチームと開発生産性
onk
PRO
44
18k
ADRを運用して3年経った僕らの現在地
onk
PRO
22
24k
1文字エイリアスのすゝめ
onk
PRO
0
100
すこやかなサービス運営のための PWG (Performance Working Group)
onk
PRO
0
1.2k
オブザーバビリティの Primary Signals
onk
PRO
2
6.4k
Cache Stampede
onk
PRO
1
2.3k
ORM - Object-relational mapping
onk
PRO
3
4k
Other Decks in Technology
See All in Technology
SREのプラクティスを用いた3領域同時 マネジメントへの挑戦 〜SRE・情シス・セキュリティを統合した チーム運営術〜
coconala_engineer
2
740
クレジットカード決済基盤を支えるSRE - 厳格な監査とSRE運用の両立 (SRE Kaigi 2026)
capytan
6
2.8k
仕様書駆動AI開発の実践: Issue→Skill→PRテンプレで 再現性を作る
knishioka
2
680
Greatest Disaster Hits in Web Performance
guaca
0
280
Bill One急成長の舞台裏 開発組織が直面した失敗と教訓
sansantech
PRO
2
390
22nd ACRi Webinar - NTT Kawahara-san's slide
nao_sumikawa
0
100
20260208_第66回 コンピュータビジョン勉強会
keiichiito1978
0
190
2026年、サーバーレスの現在地 -「制約と戦う技術」から「当たり前の実行基盤」へ- /serverless2026
slsops
2
260
AzureでのIaC - Bicep? Terraform? それ早く言ってよ会議
torumakabe
1
600
Webhook best practices for rock solid and resilient deployments
glaforge
2
300
AI駆動開発を事業のコアに置く
tasukuonizawa
1
340
顧客の言葉を、そのまま信じない勇気
yamatai1212
1
360
Featured
See All Featured
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
200
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
94
Designing Experiences People Love
moore
144
24k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.4k
Reality Check: Gamification 10 Years Later
codingconduct
0
2k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.4k
Discover your Explorer Soul
emna__ayadi
2
1.1k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
130
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
52
Docker and Python
trallard
47
3.7k
Java REST API Framework Comparison - PWX 2021
mraible
34
9.1k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
70
Transcript
マジカルsvn と キュアgit 2013-03-22 #techhills 大仲 能史 a.k.a. @onk
宣 伝 Platinum Sponsor of Rubykaigi2013
自己紹介 • 大仲 能史 • @onk • 普段の仕事 – アプリケーションエンジニア
– ソーシャルゲーム開発部 – 前線でアプリ開発をしています copyright© DRECOM Co., Ltd All Rights Reserved. 3
今日のアジェンダ • マジカルsvnとは • gitに移行して感じているメリット • 柔軟に移行するための戦略 • 移行時の準備チェックリスト
マジカルsvnとは • 「マジカル」直訳で「不思議な」 • 現実には存在しない不思議なsvnの使い方
Our subversion branches 我々の取ってい たブランチ戦略 6
3 main branches 7 trunk staging release
Commit to trunk 8 trunk staging release
Cherry pick & test on staging 9 trunk staging release
Release 10 trunk staging release
Commit 11 trunk staging release
Cherry-pick 12 trunk staging release
Release 13 trunk staging release
14 マ ジ カ ル
マジカルsvnは なぜ発生するか 15
の前に 16
理想の開発 フローとは 17
世界中の開発者の中でpull request文化が主流になりつ つあるので、普段の開発にも 取り入れたい 18
理想の開発フローとsvnとgit • チケット駆動開発をしたい – OSSで成功しているモデルだし、作業管理がし やすくなる • svnは各所でTiDDを妨げてくる – ブランチを切るコストが高い
– mergeが頭悪い • gitにはTiDDを実行する周辺環境が揃って いる – githubとpull request、travis-ci等
svnではできないのか • svnは重い • 1.7で緩和したけどまだまだ重い • 本当に重いです。やりたい開発フローに 合わせられない重さ – そしてマジカルsvnが生まれる
• 「trac-svnのリポジトリブラウザ便利だ わー」と言っている人は世界を知ってく ださい
svnではできないのか • ツールが文化を規定する – 速くなる、楽になるだけで世界が変わる • svnでは到達しづらい目標点に軽くたどり 着くことができる • 「知の高速道路」「巨人の肩」
• 乗らない手はない
今日話すこと • 話すこと – みんなでgit化する方法 • 話さないこと – 一人でgitを始める方法 –
例えばgit-svnで今すぐ中央svnリポジトリ<-> 自分はgitで開発、とするとか – git-svnは1年半ほど使い倒したので興味があ る方は直接聞きに来てください
gitに移行して感 じているメリッ ト 23
gitに移行して感じているメリット • 十分に速いリポジトリブラウザ • TiDDをやりやすい • メンバーの意識改革につながった
十分に速いリポジトリブラウザ • github、bitbucket、gitlab、etc.. • tracやredmine+svnとは桁が違う閲覧性
TiDDをやりやすい • ブランチを切るコストが低い • ブランチをマージするコストが低い • diffを見ながら会話し、1クリックでマー ジできるpull requestという仕組み
メンバーの意識改革につながった • ちゃんとコードを見てもらえる安心感 • ちょっとした思いつきをcommitする障壁 が下がる • みんなが知っていれば僕だけが悪いん じゃないという逃げ腰の人にとって、ペ アプロやコードレビューはものすごく幸
せな環境
外に出ていくようになる • 「githubにアカウントを持っていなかっ たけど作りました」 • github Organization Accountで運営して いたプロジェクトに気軽にpull request
を送ってもらえる環境を作れた • OSSに貢献しやすくなる
git移行時の フロントエンド選定ポイント • web UI • ユーザ管理やリポジトリ管理等もwebから 行える • pull
request相当の機能がある • 継続してメンテナンスできる • OSSに貢献する敷居を下げる
柔軟に移行する ための戦略 30
柔軟に移行するための戦略 • 新規アプリには勝手に始めてもらう – やる気がある人を妨げない環境があればいい – 中央のgitリポジトリだけ用意すると開発が始 まる • 既存の数年運用してきたアプリをどう移
行するかが最大の肝だった – クロスコミットで解決
subversion git 32 trunk master topic topic 移行期間を設ける
移行期間を設ける • クロスコミットするようにした – git-svn-bridge • svnにcommit / gitにpushどちらでもいい –
「重要なので、svnで失礼します」 – リリースフローはsvnのまま変えない • まずgitに慣れてもらって、その間に cherry-pickが必要なリリースフローを直 す
移行後の開発フロー • git-flow、github-flowは夢物語 • リリースし続けるアプリケーションでは github-flowが理想 – リリースできないものをmasterに入れない • ブランチをdeployしてテストする環境整
備とか。。 • まだ試行錯誤中です。
移行時の準備 チェックリスト 35
「社内に1人は居るgit好 き」に任せると漏れがち になる部分を重点的に 36
移行時の準備チェックリスト • 上を倒す • 横を倒す • 継続的に運用する手段の確保
上を倒す • githubの説明、レビュー文化の説明 • 「正しい文化だから取り入れましょう」 – コードレビューが改善として上がる状況なら これは納得してもらえる • GHEを入れるほどは倒せなかった
– 予算に組み込まれてないので数百万のイニ シャルコストはまずい – 継続的なコストはそこまで気にしていないの で勝手にgitlab化を進めた
横を倒す • 横とは – (svnを上手に使えていない)非エンジニア – svnで回ってるので移行する理由がない人
横を倒す • メリットを提示する – そもそも変更履歴という概念があまりなく、共有 サーバとして使っている – 画像の差分が見られるよ • 元気なプロジェクトで試して便利そう楽しそ
うに見せる – pull requestでワイワイする – 全ユーザが全プロジェクトを見れるようにし、 回ってるプロジェクトを見せて使い方をイメージ してもらう
横を倒す • 移行しない理由を潰す – 推奨クライアントの設定、ドキュメント整備 • windowsがネック。SourceTree出ましたね! • エンジニア向けにはtigやfugitive、magitの説明 –
全プロジェクト、勝手に同期しておく – 全社的に移行する姿勢を見せる • ドメインを会社のトップレベルにした – 使い始めてくれたプロジェクトのIRCを張って、 不満を言われた瞬間に直す
横を倒す • 移行しない理由を潰す – 詰まった時にすぐ聞ける環境を作る – 各プロジェクトに2人以上gitのコミットオブ ジェクトを理解している人を配備 – 置き換えるための不安を潰し続ける
• 今やってる~の作業、gitではこの手順書を見てく ださい • コンフリクトが起きたらコミットツリーを描いて 何故おきたのか、どうすればいいのかを説明する
継続的に運用する • バックアップ • 冗長化 – gitoliteのミラーリング – mysqlのレプリケーション •
gitlabのコミッタ数名 – vagrantを用意 – gitlabの更新手順を用意
全てのプロジェクトを移行する • gitでの様々な手順書を用意する • 上手い使い方を発表してもらう • キリ番を祝う – 【祝】issue 100
• 移行してないプロジェクトは仲間外れだ よね、カッコ悪いよねという空気の醸成 – 「開発者はうまく怒らせるとすごい生産性を 発揮する」
gitである必要は あったか 45
結論を言うと 「ない」 46
十分に速いソースコード リポジトリと、TiDDをや りやすい周辺環境が揃っ ていれば何でも良い 47
svnには欠けていた gitには揃っている 48
リポジトリをgitにするだけじゃダ メなの? • ワークフローはツールが規定する – UIが使われ方を決める。UI大事。 • web UIが無かったら? –
ほぼsvnと同じ使われ方をします – ゴールは「pull request文化の輸入」 – 個人で幸せになってていいのは小学生まで – チームの生産性最大化を考えよう
ソフトウェアだけじゃな く、チームも、組織も、 すべてを設計せよ 50
ご清聴 ありがとうございました 51