40
おぷ☆すたプロデュース GitHub ハンズオン ( 仮 ) 2012/2/1 This presentation includes following icons. Vista icon set: http://www.iconarchive.com/show/vista-people-icons-by-icons-land.html . DevCom Network icon pack:http://www.devcom.com/ Flat: http://www.yellowicon.com/

Opsta github-hundson 20120201

Embed Size (px)

DESCRIPTION

OpenStack勉強会で行なったGitHubハンズオンの内容です。

Citation preview

Page 1: Opsta github-hundson 20120201

おぷ☆すたプロデュースGitHub ハンズオン ( 仮 )

2012/2/1

This presentation includes following icons.Vista icon set: http://www.iconarchive.com/show/vista-people-icons-by-icons-land.html .DevCom Network icon pack:http://www.devcom.com/Flat: http://www.yellowicon.com/

Page 2: Opsta github-hundson 20120201

おしながき

● Git/GitHub の概要● Git によるプルリクエストの概要● Open Stack へのコントリビュートの概要● 演習● LT( 中井、吉山 )● OpenStack に関する議論

Page 3: Opsta github-hundson 20120201

Git/GitHub の概要

Page 4: Opsta github-hundson 20120201

Git の概要

履歴参照やブランチの作成など、リポジトリへ逐一アクセス

ローカルにリポジトリのミラーを持ち、そこで作業

やり取りは基本同期のみオフラインでも作業可能( 出張中やサーバメンテ中でも継続できる )一回ローカルのリポジトリへコミットするので、リカバリができる

通信量が多い ( 重くなりがち )オンラインでないと作業できない操作を間違えたら即反映

Page 5: Opsta github-hundson 20120201

GitHub の概要

Gitを中核としたプロジェクト管理サービス

● Git● Issue Tracker● Wiki● Webサイト管理

無償プラン : リポジトリは公開

有償プラン : リポジトリは非公開にできる

Page 6: Opsta github-hundson 20120201

マージ  VS リベース

Page 7: Opsta github-hundson 20120201

ブランチ

master

メインラインで開発が進む

リビジョン(あるときのコードの状態 )

ただの線に見えるけど、これが変更

(コミット、チェンジセット )

Page 8: Opsta github-hundson 20120201

ブランチ

master

bug-fix

バグを直したり、機能追加したいんだけど、でも開発者に迷惑掛けたくないし、、、

→ブランチでメインラインに影響の無い様に開発

Page 9: Opsta github-hundson 20120201

ブランチ

master

bug-fix

でも、ブランチを開発してる間にもメインラインは開発は進む

Page 10: Opsta github-hundson 20120201

master

bug-fix

よし、機能が完成したぞ!!そろそろ直したバグ ( 追加した機能 ) を

取り込んでもらたいなぁ

ブランチのマージ

Page 11: Opsta github-hundson 20120201

master

bug-fix

異なるブランチで同じ場所を編集してしまったため、

競合が発生!!

ブランチの競合

Page 12: Opsta github-hundson 20120201

master

bug-fix

なんか、編集した場所が競合してうまく取り込めない

( マージできない ) んだけど

異なるブランチで同じ場所を編集してしまったため、

競合が発生!!

うまくマージできない

ブランチの競合

Page 13: Opsta github-hundson 20120201

master

bug-fix

競合を修正!!マージ

ブランチの競合の解消

マージする人が競合を解決( マージする人(リポジトリ管理者 )

にマージ作業が集中 )

Page 14: Opsta github-hundson 20120201

master

bug-fix

マージする人が競合を解決( マージする人(リポジトリ管理者 )

にマージ作業が集中 )

競合を修正!!マージ

ブランチ

Page 15: Opsta github-hundson 20120201

リベース (1)

master

bug-fix

ブランチを開発してる間にもメインラインは開発は進む

Page 16: Opsta github-hundson 20120201

リベース (3)

master

bug-fix

master

bug-fix

最新のリビジョンから伸びたように付け替える ( このとき競合を解決 )

Page 17: Opsta github-hundson 20120201

リベース (3)

master

bug-fix

master

bug-fix

競合がないので、安心してマージ!!

最新のリビジョンから伸びたように付け替える ( このとき競合を解決 )

Page 18: Opsta github-hundson 20120201

GitHub のプルリクエストの流れ

本家リポジトリ

GitHub

Page 19: Opsta github-hundson 20120201

フォーク

本家リポジトリ

GitHub

フォーク (fork)自分のリポジトリ

Page 20: Opsta github-hundson 20120201

作業用リポジトリを取得

本家リポジトリ

GitHub

フォーク (fork)自分のリポジトリ

clone

ローカルリポジトリ mastermaster

Page 21: Opsta github-hundson 20120201

作業用ブランチを作成

本家リポジトリ

GitHub

フォーク (fork)自分のリポジトリ

clone

ローカルリポジトリ mastermasterfixed

-xxx

※masterを作業用ブランチにしてもいいが、本家のリポジトリが更新されたときに、追従が難しくなる。masterはあくまで本家リポジトリと同期するようになる。

Page 22: Opsta github-hundson 20120201

作業用ブランチを作成

本家リポジトリ

GitHub

フォーク (fork)自分のリポジトリ

clone

ローカルリポジトリ mastermasterfixed

-xxx

作業

※masterを作業用ブランチにしてもいいが、本家のリポジトリが更新されたときに、追従が難しくなる。masterはあくまで本家リポジトリと同期するように、ブランチで作業

作業用ブランチは取り敢えず本家の影響は受けない

mastermastermastermaster

master

本家と同期させる

Page 23: Opsta github-hundson 20120201

修正・コミット

本家リポジトリ

GitHub

自分のリポジトリ

ローカルリポジトリ mastermasterfixed

-xxx

修正

コミット

Page 24: Opsta github-hundson 20120201

ブランチを GitHub へプッシュ

本家リポジトリ

GitHub

自分のリポジトリ

ローカルリポジトリ mastermasterfixed

-xxx

プッシュ

fixed-xxx

Page 25: Opsta github-hundson 20120201

ブランチを GitHub へプッシュ

本家リポジトリ

GitHub

自分のリポジトリ

ローカルリポジトリ mastermasterfixed

-xxx

master

プルリクエスト

プルリクエスト

変更依頼書のようなもの

fixed-xxx

Page 26: Opsta github-hundson 20120201

ブランチを GitHub へプッシュ

本家リポジトリ

GitHub

自分のリポジトリ

ローカルリポジトリ mastermasterfixed

-xxx

master

プルリクエスト

プルリクエスト

fixed-xxx

レビュー、コメント

Page 27: Opsta github-hundson 20120201

ブランチを GitHub へプッシュ

本家リポジトリ

GitHub

自分のリポジトリ

ローカルリポジトリ mastermasterfixed

-xxx

master

プルリクエスト

プルリクエスト

××直せやごらぁby伊藤コメント

fixed-xxx

レビュー、コメント

Page 28: Opsta github-hundson 20120201

ブランチを GitHub へプッシュ

本家リポジトリ

GitHub

自分のリポジトリ

ローカルリポジトリ mastermasterfixed

-xxx

master

プルリクエストレビュー、コメント

プルリクエスト

××直せやごらぁby伊藤コメント

修正

コミット

fixed-xxx

Page 29: Opsta github-hundson 20120201

ブランチを GitHub へプッシュ

本家リポジトリ

GitHub

自分のリポジトリ

ローカルリポジトリ mastermasterfixed

-xxx

master

プルリクエスト

××直せやごらぁby伊藤

プッシュ

プルリクエストの差分の内容は自動的に更新

される

対応しました!!(by ほげお )

fixed-xxx

Page 30: Opsta github-hundson 20120201

ブランチを GitHub へプッシュ

本家リポジトリ

GitHub

自分のリポジトリ

ローカルリポジトリ mastermasterfixed

-xxx

master

プルリクエスト

××直せやごらぁby伊藤

プッシュ

プルリクエストの差分の内容は自動的に更新

される

対応しました!!(by ほげお )

fixed-xxx

Page 31: Opsta github-hundson 20120201

OpenStack の場合詳細は下記を参照

http://wiki.openstack.org/DevQuickstart/ja

Page 32: Opsta github-hundson 20120201

OpenStack(Nova) の場合

本家(GitHub)

レビューシステム(Gerrit)

LaunchPad(バグ・仕様管理 )

バグ・仕様は LaunchPad で管理コードは GitHub で管理レビューは Gerrit というこれまた別のシステムで管理

Page 33: Opsta github-hundson 20120201

バグ報告・提案の登録

本家(GitHub)

レビューシステム(Gerrit)

LaunchPad(バグ・仕様管理 )

Bug Blueprint

Page 34: Opsta github-hundson 20120201

リポジトリの複製

本家(GitHub)

レビューシステム(Gerrit)

LaunchPad(バグ・仕様管理 )

Bug Blueprint

ローカルリポジトリ mastermasterfixed

-xxx

clone

Page 35: Opsta github-hundson 20120201

修正・コミット

本家(GitHub)

レビューシステム(Gerrit)

LaunchPad(バグ・仕様管理 )

Bug Blueprint

ローカルリポジトリ mastermasterfixed

-xxx

修正

コミット

Page 36: Opsta github-hundson 20120201

修正・コミット

本家(GitHub)

レビューシステム(Gerrit)

LaunchPad(バグ・仕様管理 )

Bug Blueprint

ローカルリポジトリ mastermasterfixed

-xxx

テスト実行!!OK!!

Page 37: Opsta github-hundson 20120201

レビュー依頼の登録

本家(GitHub)

レビューシステム(Gerrit)

LaunchPad(バグ・仕様管理 )

Bug Blueprint

ローカルリポジトリ mastermasterfixed

-xxx

レビュー依頼・修正(git review)

fixed-xxx

Page 38: Opsta github-hundson 20120201

レビュー依頼の登録

本家(GitHub)

レビューシステム(Gerrit)

LaunchPad(バグ・仕様管理 )

Bug Blueprint

ローカルリポジトリ mastermasterfixed

-xxx

レビュー依頼・修正(git review)

fixed-xxx

レビュー依頼を修正するときは、changeid を付けないと同じレビューリクエストに対する更新とみなしてくれないので注意 ( 基本自動でやってくれる )

Page 39: Opsta github-hundson 20120201

GitHub リポジトリへの反映

本家(GitHub)

レビューシステム(Gerrit)

LaunchPad(バグ・仕様管理 )

Bug Blueprint

ローカルリポジトリ mastermasterfixed

-xxx

レビュー依頼・修正(git review)

リポジトリへ反映

OK!

fixed-xxx

Page 40: Opsta github-hundson 20120201

その他のプロジェクト

本家(GitHub)

レビューシステム(Gerrit)

LaunchPad(バグ・仕様管理 )

Bug Blueprint

ローカルリポジトリ mastermasterfixed

-xxx

Apacheとかだと JIRAだったり、GitHubをリポジトリと

Issue Trackingを分けているプロジェクトも多い