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
6
マジカル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
44
17k
ADRを運用して3年経った僕らの現在地
onk
PRO
22
23k
1文字エイリアスのすゝめ
onk
PRO
0
73
すこやかなサービス運営のための PWG (Performance Working Group)
onk
PRO
0
1k
オブザーバビリティの Primary Signals
onk
PRO
2
6.2k
Cache Stampede
onk
PRO
1
2.2k
ORM - Object-relational mapping
onk
PRO
2
3.8k
デュアルトラックアジャイルとの向き合い方
onk
PRO
5
13k
技術記事を書く&楽しむチームの作り方
onk
PRO
2
2.1k
Other Decks in Technology
See All in Technology
業務自動化プラットフォーム Google Agentspace に入門してみる #devio2025
maroon1st
0
190
Goにおける 生成AIによるコード生成の ベンチマーク評価入門
daisuketakeda
2
100
ZOZOのAI活用実践〜社内基盤からサービス応用まで〜
zozotech
PRO
0
170
【新卒研修資料】LLM・生成AI研修 / Large Language Model・Generative AI
brainpadpr
23
17k
Why React!?? Next.jsそしてReactを改めてイチから選ぶ
ypresto
10
4.4k
Flaky Testへの現実解をGoのプロポーザルから考える | Go Conference 2025
upamune
1
420
o11yで育てる、強い内製開発組織
_awache
3
120
いまさら聞けない ABテスト入門
skmr2348
1
200
10年の共創が示す、これからの開発者と企業の関係 ~ Crossroad
soracom
PRO
1
170
VCC 2025 Write-up
bata_24
0
180
Optuna DashboardにおけるPLaMo2連携機能の紹介 / PFN LLM セミナー
pfn
PRO
1
870
AWSにおけるTrend Vision Oneの効果について
shimak
0
120
Featured
See All Featured
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
9
580
Building Adaptive Systems
keathley
43
2.8k
The Art of Programming - Codeland 2020
erikaheidi
56
14k
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
Facilitating Awesome Meetings
lara
56
6.6k
Learning to Love Humans: Emotional Interface Design
aarron
274
40k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
48
9.7k
Building a Modern Day E-commerce SEO Strategy
aleyda
43
7.7k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
54
3k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
960
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.5k
GitHub's CSS Performance
jonrohan
1032
460k
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