opsta github-hundson 20120201
DESCRIPTION
OpenStack勉強会で行なったGitHubハンズオンの内容です。TRANSCRIPT
おぷ☆すたプロデュース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/
おしながき
● Git/GitHub の概要● Git によるプルリクエストの概要● Open Stack へのコントリビュートの概要● 演習● LT( 中井、吉山 )● OpenStack に関する議論
Git/GitHub の概要
Git の概要
履歴参照やブランチの作成など、リポジトリへ逐一アクセス
ローカルにリポジトリのミラーを持ち、そこで作業
やり取りは基本同期のみオフラインでも作業可能( 出張中やサーバメンテ中でも継続できる )一回ローカルのリポジトリへコミットするので、リカバリができる
通信量が多い ( 重くなりがち )オンラインでないと作業できない操作を間違えたら即反映
GitHub の概要
Gitを中核としたプロジェクト管理サービス
● Git● Issue Tracker● Wiki● Webサイト管理
無償プラン : リポジトリは公開
有償プラン : リポジトリは非公開にできる
マージ VS リベース
ブランチ
master
メインラインで開発が進む
リビジョン(あるときのコードの状態 )
ただの線に見えるけど、これが変更
(コミット、チェンジセット )
ブランチ
master
bug-fix
バグを直したり、機能追加したいんだけど、でも開発者に迷惑掛けたくないし、、、
→ブランチでメインラインに影響の無い様に開発
ブランチ
master
bug-fix
でも、ブランチを開発してる間にもメインラインは開発は進む
master
bug-fix
よし、機能が完成したぞ!!そろそろ直したバグ ( 追加した機能 ) を
取り込んでもらたいなぁ
ブランチのマージ
master
bug-fix
異なるブランチで同じ場所を編集してしまったため、
競合が発生!!
ブランチの競合
master
bug-fix
なんか、編集した場所が競合してうまく取り込めない
( マージできない ) んだけど
異なるブランチで同じ場所を編集してしまったため、
競合が発生!!
うまくマージできない
ブランチの競合
master
bug-fix
競合を修正!!マージ
ブランチの競合の解消
マージする人が競合を解決( マージする人(リポジトリ管理者 )
にマージ作業が集中 )
master
bug-fix
マージする人が競合を解決( マージする人(リポジトリ管理者 )
にマージ作業が集中 )
競合を修正!!マージ
ブランチ
リベース (1)
master
bug-fix
ブランチを開発してる間にもメインラインは開発は進む
リベース (3)
master
bug-fix
master
bug-fix
最新のリビジョンから伸びたように付け替える ( このとき競合を解決 )
リベース (3)
master
bug-fix
master
bug-fix
競合がないので、安心してマージ!!
最新のリビジョンから伸びたように付け替える ( このとき競合を解決 )
GitHub のプルリクエストの流れ
本家リポジトリ
GitHub
フォーク
本家リポジトリ
GitHub
フォーク (fork)自分のリポジトリ
作業用リポジトリを取得
本家リポジトリ
GitHub
フォーク (fork)自分のリポジトリ
clone
ローカルリポジトリ mastermaster
作業用ブランチを作成
本家リポジトリ
GitHub
フォーク (fork)自分のリポジトリ
clone
ローカルリポジトリ mastermasterfixed
-xxx
※masterを作業用ブランチにしてもいいが、本家のリポジトリが更新されたときに、追従が難しくなる。masterはあくまで本家リポジトリと同期するようになる。
作業用ブランチを作成
本家リポジトリ
GitHub
フォーク (fork)自分のリポジトリ
clone
ローカルリポジトリ mastermasterfixed
-xxx
作業
※masterを作業用ブランチにしてもいいが、本家のリポジトリが更新されたときに、追従が難しくなる。masterはあくまで本家リポジトリと同期するように、ブランチで作業
作業用ブランチは取り敢えず本家の影響は受けない
mastermastermastermaster
master
本家と同期させる
修正・コミット
本家リポジトリ
GitHub
自分のリポジトリ
ローカルリポジトリ mastermasterfixed
-xxx
修正
コミット
ブランチを GitHub へプッシュ
本家リポジトリ
GitHub
自分のリポジトリ
ローカルリポジトリ mastermasterfixed
-xxx
プッシュ
fixed-xxx
ブランチを GitHub へプッシュ
本家リポジトリ
GitHub
自分のリポジトリ
ローカルリポジトリ mastermasterfixed
-xxx
master
プルリクエスト
プルリクエスト
変更依頼書のようなもの
fixed-xxx
ブランチを GitHub へプッシュ
本家リポジトリ
GitHub
自分のリポジトリ
ローカルリポジトリ mastermasterfixed
-xxx
master
プルリクエスト
プルリクエスト
fixed-xxx
レビュー、コメント
ブランチを GitHub へプッシュ
本家リポジトリ
GitHub
自分のリポジトリ
ローカルリポジトリ mastermasterfixed
-xxx
master
プルリクエスト
プルリクエスト
××直せやごらぁby伊藤コメント
fixed-xxx
レビュー、コメント
ブランチを GitHub へプッシュ
本家リポジトリ
GitHub
自分のリポジトリ
ローカルリポジトリ mastermasterfixed
-xxx
master
プルリクエストレビュー、コメント
プルリクエスト
××直せやごらぁby伊藤コメント
修正
コミット
fixed-xxx
ブランチを GitHub へプッシュ
本家リポジトリ
GitHub
自分のリポジトリ
ローカルリポジトリ mastermasterfixed
-xxx
master
プルリクエスト
××直せやごらぁby伊藤
プッシュ
プルリクエストの差分の内容は自動的に更新
される
対応しました!!(by ほげお )
fixed-xxx
ブランチを GitHub へプッシュ
本家リポジトリ
GitHub
自分のリポジトリ
ローカルリポジトリ mastermasterfixed
-xxx
master
プルリクエスト
××直せやごらぁby伊藤
プッシュ
プルリクエストの差分の内容は自動的に更新
される
対応しました!!(by ほげお )
fixed-xxx
OpenStack の場合詳細は下記を参照
http://wiki.openstack.org/DevQuickstart/ja
OpenStack(Nova) の場合
本家(GitHub)
レビューシステム(Gerrit)
LaunchPad(バグ・仕様管理 )
バグ・仕様は LaunchPad で管理コードは GitHub で管理レビューは Gerrit というこれまた別のシステムで管理
バグ報告・提案の登録
本家(GitHub)
レビューシステム(Gerrit)
LaunchPad(バグ・仕様管理 )
Bug Blueprint
リポジトリの複製
本家(GitHub)
レビューシステム(Gerrit)
LaunchPad(バグ・仕様管理 )
Bug Blueprint
ローカルリポジトリ mastermasterfixed
-xxx
clone
修正・コミット
本家(GitHub)
レビューシステム(Gerrit)
LaunchPad(バグ・仕様管理 )
Bug Blueprint
ローカルリポジトリ mastermasterfixed
-xxx
修正
コミット
修正・コミット
本家(GitHub)
レビューシステム(Gerrit)
LaunchPad(バグ・仕様管理 )
Bug Blueprint
ローカルリポジトリ mastermasterfixed
-xxx
テスト実行!!OK!!
レビュー依頼の登録
本家(GitHub)
レビューシステム(Gerrit)
LaunchPad(バグ・仕様管理 )
Bug Blueprint
ローカルリポジトリ mastermasterfixed
-xxx
レビュー依頼・修正(git review)
fixed-xxx
レビュー依頼の登録
本家(GitHub)
レビューシステム(Gerrit)
LaunchPad(バグ・仕様管理 )
Bug Blueprint
ローカルリポジトリ mastermasterfixed
-xxx
レビュー依頼・修正(git review)
fixed-xxx
レビュー依頼を修正するときは、changeid を付けないと同じレビューリクエストに対する更新とみなしてくれないので注意 ( 基本自動でやってくれる )
GitHub リポジトリへの反映
本家(GitHub)
レビューシステム(Gerrit)
LaunchPad(バグ・仕様管理 )
Bug Blueprint
ローカルリポジトリ mastermasterfixed
-xxx
レビュー依頼・修正(git review)
リポジトリへ反映
OK!
fixed-xxx
その他のプロジェクト
本家(GitHub)
レビューシステム(Gerrit)
LaunchPad(バグ・仕様管理 )
Bug Blueprint
ローカルリポジトリ mastermasterfixed
-xxx
Apacheとかだと JIRAだったり、GitHubをリポジトリと
Issue Trackingを分けているプロジェクトも多い