DSCM is Agile
-
Upload
keita-urashima -
Category
Technology
-
view
1.737 -
download
0
Transcript of DSCM is Agile
みんな分散SCMを使えばいいと思うよ
浦嶌 啓太 (uid:ursm)(株)永和システムマネジメント
お品書き
1.分散SCMとは
2.分散SCMツールの比較
3.Mercurial体験コース
4.Q&A
Linus Torvalds
Subversionほど無意味なプロジェクトはない
Subversion爆発しろ
• すべての変更がトラッキングされる
• お粗末なマージ機能
• オフラインだと何もできない
• 何をするにも遅すぎる
そこで分散SCMですよ!
分散SCMとは
従来のSCMと分散SCMの違い
分散SCMのアプローチ•開発者それぞれが独立したリポジトリを持つ
•必要な時に変更を伝播する
•主従関係がない
分散SCMの作業フロー
1. clone 2. commit 3. push/pull (merge)
分散SCMが提供するもの
•オレオレブランチ
•柔軟なデータフロー
•強力なマージ
•オフラインアクセス
オレオレブランチ
•自分のリポジトリは自分専用のブランチ
•好きなだけコミットして好きな時にマージすればいいよ
•もちろん捨ててもOK
柔軟なデータフロー
•すべてのリポジトリは対等な関係
•変更を受け渡すフローを自由に変更できる
•隣の人から直接変更を貰ってきたりできる!
強力なマージ
•マージは「日常的な作業」
•優れたマージアルゴリズム
• svn upぐらいの手軽さ
オフラインアクセス•各リポジトリは完全な情報を持つ
•push/pull以外の操作はすべてローカルで完結する
•いつでもどこでも開発できる
•すっごく速いよ!
まとめ•分散SCMはいいものですよ!
•気軽で
•柔軟で
•パワフルで
•速い!
アジャイルな組織には分散SCMがよく似合う
分散SCMツールの比較
いろいろあります
どれを使えば良いの?•実績があるのは Git と Mercurial
• Git
• Linux Kernel, X.Org, Samba, Rails
•Mercurial
• OpenJDK, OpenSolaris, Mozilla
Gitの特徴•機能性を重視
•低レベルな部分も触れる
•Subversion連携がしっかりしている
•Rails界隈のデファクトスタンダード
•GitHub
Gitのここが駄目
•コマンドが100個以上ある…
•依存関係が多くてビルドが面倒
•まともなGUIクライアントがない
Mercurialの特徴•シンプルさを重視
•痒いところに手が届くインターフェース
•拡張性が高い
•ドキュメントが充実している
•GUIなクライアントも一応ある
Mercurialのここが駄目
•やや保守的
•Subversion連携がイマイチ
•GitHubがない
Git MercurialC + Perl + sh多機能・実利的
Python + Cシンプル・理論的
何でもできるSubversionと仲が良いRails界隈で一大ブーム
親切なUI拡張性が高い
関連ツールが充実してる
複雑すぎるWindows? シラネ
もう少し弾けて欲しいSubversion? シラネ
Git vs Mercurial
結論
•どっちでもいい
•強いて言えば…
•Subversion連携を重視するならGit
•手軽に使いたいならMercurial
Mercurial体験コース
Step 1リポジトリを作る
• hg init
• hg add• hg status (st)
• hg commit (ci)• hg log
Step 2cloneしてみる
• hg clone
• hg outgoing (out)• hg push
• hg incoming (in)• hg pull
• hg update (up)
Step 3マージしてみる
• hg heads
• hg merge
Mercurialとうまく付き合うコツ
•メッセージはちゃんと見よう
•ローカルとリモートを意識しよう
•マージは頻繁にやろう
Congratulations!
Q&A•日本語大丈夫?
•バックアップってどうすんの?
•ユーザ管理は?
• http(s)通るのか?
•どうすればVSSを追放できるのか?
日本語大丈夫?
•鬼門は日本語のファイル名
•Mercurialは大体OK、Windows環境の問題もMBCS Extensionで克服した
•Gitはログ中の多バイト文字がエスケープされてるけど問題ない (らしい)
バックアップってどうすんの?
• cloneすれば良いんじゃないかな
ユーザ管理は?
•基本的にはUNIXユーザ/グループのアクセス権で管理
•HTTP経由なら今まで通りApacheで
•MercurialだとACL Extensionというのもあります (使ったことないけど)
http(s)通るのか?
•Of course.
•MercurialはWebDAVじゃないのでプロキシ環境でも安心ですよ
どうすればVSSを追放できるのか?
Kent Beck
Social change starts with YOU.
ご質問は?
ご静聴ありがとうございました