SlideShare ist ein Scribd-Unternehmen logo
1 von 40
Downloaden Sie, um offline zu lesen
おぷ☆すたプロデュース
                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



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



メインラインで開発が進む
ブランチ
                   bug-fix




                             master




バグを直したり、機能追加したいんだけど、でも開
    発者に迷惑掛けたくないし、、、
→ブランチでメインラインに影響の無い様に開発
ブランチ
              bug-fix




                        master




でも、ブランチを開発してる間にも
  メインラインは開発は進む
ブランチのマージ
                  bug-fix




                            master




   よし、機能が完成したぞ!!
そろそろ直したバグ ( 追加した機能 ) を
    取り込んでもらたいなぁ
ブランチの競合
   異なるブランチで同じ場所を
    編集してしまったため、
       競合が発生!!


                   bug-fix




                             master
ブランチの競合
        異なるブランチで同じ場所を
         編集してしまったため、
            競合が発生!!


                        bug-fix
                        うまくマージ
                        できない


                                  master




なんか、編集した場所が競合して
     うまく取り込めない
  ( マージできない ) んだけど
ブランチの競合の解消
           競合を修正!!
            マージ



                     bug-fix




                               master




   マージする人が競合を解決
( マージする人(リポジトリ管理者 )
     にマージ作業が集中 )
ブランチ
           競合を修正!!
            マージ



                     bug-fix




                               master




   マージする人が競合を解決
( マージする人(リポジトリ管理者 )
     にマージ作業が集中 )
リベース (1)

              bug-fix




                        master




ブランチを開発してる間にも
 メインラインは開発は進む
リベース (3)
          bug-fix




                          master

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




                          master
リベース (3)
          bug-fix




                          master

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



        競合がないので、
        安心してマージ!!
                          master
GitHub のプルリクエストの流れ
GitHub
  本家
 リポジトリ
フォーク
GitHub
   本家                  自分の
 リポジトリ   フォーク (fork)   リポジトリ
作業用リポジトリを取得
GitHub
   本家                  自分の
 リポジトリ   フォーク (fork)   リポジトリ




                        clone




                        ローカル
                       リポジトリ master
作業用ブランチを作成
  GitHub
      本家                             自分の
    リポジトリ      フォーク (fork)           リポジトリ




                                      clone

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

                                      ローカル
                             fixed   リポジトリ master
                              -xxx
作業用ブランチを作成
  GitHub
      本家 master                              自分の
    リポジトリ         フォーク (fork)                リポジトリ

                                     本家と同期させる


                                              clone

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

                                              ローカル
                                     fixed   リポジトリ master
                                      -xxx
修正・コミット
GitHub
   本家                    自分の
 リポジトリ                   リポジトリ




                  コミット
            修正

                          ローカル
                 fixed   リポジトリ master
                  -xxx
ブランチを GitHub へプッシュ
GitHub
   本家                     自分の
 リポジトリ              fixedリポジトリ
                     -xxx




                     プッシュ




                       ローカル
            fixed     リポジトリ master
             -xxx
ブランチを GitHub へプッシュ
                               変更依頼書の
GitHub                         ようなもの


                        プル
   本家                 リクエスト               自分の
 リポジトリ                              fixedリポジトリ
         master
                                     -xxx
                  プルリクエスト




                                       ローカル
                            fixed     リポジトリ master
                             -xxx
ブランチを GitHub へプッシュ
GitHub     プル
         リクエスト

   本家                                     自分の
 リポジトリ                              fixedリポジトリ
         master
                                     -xxx
                  プルリクエスト
 レビュー、コメント




                                       ローカル
                            fixed     リポジトリ master
                             -xxx
ブランチを GitHub へプッシュ
               ×× 直せや
GitHub     プル
                ごらぁ
                by 伊藤
         リクエスト     コメント

   本家                                     自分の
 リポジトリ                              fixedリポジトリ
         master
                                     -xxx
                  プルリクエスト
 レビュー、コメント




                                       ローカル
                            fixed     リポジトリ master
                             -xxx
ブランチを GitHub へプッシュ
               ×× 直せや
GitHub     プル
                ごらぁ
                by 伊藤
         リクエスト     コメント

   本家                                     自分の
 リポジトリ                              fixedリポジトリ
         master
                                     -xxx
                  プルリクエスト
 レビュー、コメント




                             コミット
                     修正

                                       ローカル
                            fixed     リポジトリ master
                             -xxx
ブランチを GitHub へプッシュ
                  ×× 直せや
GitHub     プル
                   ごらぁ 対応しました!!
                   by 伊藤 (by ほげお )
         リクエスト

   本家                                       自分の
 リポジトリ                                fixedリポジトリ
         master
                                       -xxx




     プルリクエストの差分の
      内容は自動的に更新
         される
                                       プッシュ




                                         ローカル
                              fixed     リポジトリ master
                               -xxx
ブランチを GitHub へプッシュ
                  ×× 直せや
GitHub     プル
                   ごらぁ 対応しました!!
                   by 伊藤 (by ほげお )
         リクエスト

   本家                                       自分の
 リポジトリ                                fixedリポジトリ
         master
                                       -xxx




     プルリクエストの差分の
      内容は自動的に更新
         される
                                       プッシュ




                                         ローカル
                              fixed     リポジトリ master
                               -xxx
OpenStack の場合
             詳細は下記を参照
http://wiki.openstack.org/DevQuickstart/ja
OpenStack(Nova) の場合
LaunchPad                      レビュー
                   本家
  ( バグ・                        システム
                 (GitHub)
仕様管理 )                         (Gerrit)




     バグ・仕様は LaunchPad で管理
     コードは GitHub で管理
     レビューは Gerrit というこれまた別のシステムで管理
バグ報告・提案の登録
 LaunchPad                レビュー
                 本家
   ( バグ・                  システム
               (GitHub)
 仕様管理 )                   (Gerrit)

        Blue
Bug    print
リポジトリの複製
 LaunchPad                             レビュー
                          本家
   ( バグ・                               システム
                        (GitHub)
 仕様管理 )                                (Gerrit)

        Blue
Bug    print



                          clone




                         ローカル
                fixed   リポジトリ master
                 -xxx
修正・コミット
 LaunchPad                                 レビュー
                              本家
   ( バグ・                                   システム
                            (GitHub)
 仕様管理 )                                    (Gerrit)

        Blue
Bug    print




                     コミット
               修正

                             ローカル
                    fixed   リポジトリ master
                     -xxx
修正・コミット
 LaunchPad                                レビュー
                             本家
   ( バグ・                                  システム
                           (GitHub)
 仕様管理 )                                   (Gerrit)

        Blue
Bug    print




         テスト実行!!
         OK!!


                            ローカル
                   fixed   リポジトリ master
                    -xxx
レビュー依頼の登録
 LaunchPad                                     レビュー
                         本家
   ( バグ・                                       システム
                       (GitHub)
 仕様管理 )                                fixed   (Gerrit)
                                        -xxx
        Blue
Bug    print



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




                        ローカル
               fixed   リポジトリ master
                -xxx
レビュー依頼の登録
 LaunchPad                                     レビュー
                         本家
   ( バグ・                                       システム
                       (GitHub)
 仕様管理 )                                fixed   (Gerrit)
                                        -xxx
        Blue
Bug    print



                                  レビュー依頼・修正
                                  (git review)
                                     レビュー依頼を修正するときは、
                                     changeid を付けないと同じレ
                                     ビューリクエストに対する更新と
                                     みなしてくれないので注意 ( 基
                        ローカル         本自動でやってくれる )
               fixed   リポジトリ master
                -xxx
GitHub リポジトリへの反映
                                       OK!


                                   リポジトリ
 LaunchPad                         へ反映         レビュー
                         本家
   ( バグ・                                       システム
                       (GitHub)
 仕様管理 )                                fixed   (Gerrit)
                                        -xxx
        Blue
Bug    print



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




                        ローカル
               fixed   リポジトリ master
                -xxx
その他のプロジェクト
 LaunchPad                                   レビュー
                         本家
   ( バグ・                                     システム
                       (GitHub)
 仕様管理 )                                      (Gerrit)

        Blue
Bug    print
                        Apache とかだと JIRA だったり、
                            GitHub をリポジトリと
                         Issue Tracking を分けている
                             プロジェクトも多い




                        ローカル
               fixed   リポジトリ master
                -xxx

Weitere ähnliche Inhalte

Ähnlich wie Opsta github-hundson 20120201

SVN経験者のためのGIT入門
SVN経験者のためのGIT入門SVN経験者のためのGIT入門
SVN経験者のためのGIT入門AimingStudy
 
Debianを用いたCortex-M3マイコン開発事例のご紹介
Debianを用いたCortex-M3マイコン開発事例のご紹介Debianを用いたCortex-M3マイコン開発事例のご紹介
Debianを用いたCortex-M3マイコン開発事例のご紹介Kiwamu Okabe
 
gitを使う準備をしよう - 初級編
gitを使う準備をしよう - 初級編gitを使う準備をしよう - 初級編
gitを使う準備をしよう - 初級編Sanae Yamashita
 

Ähnlich wie Opsta github-hundson 20120201 (6)

Git(japanese)
Git(japanese)Git(japanese)
Git(japanese)
 
Git (実践入門編)
Git (実践入門編)Git (実践入門編)
Git (実践入門編)
 
SVN経験者のためのGIT入門
SVN経験者のためのGIT入門SVN経験者のためのGIT入門
SVN経験者のためのGIT入門
 
Shizudev git hub宿題
Shizudev git hub宿題Shizudev git hub宿題
Shizudev git hub宿題
 
Debianを用いたCortex-M3マイコン開発事例のご紹介
Debianを用いたCortex-M3マイコン開発事例のご紹介Debianを用いたCortex-M3マイコン開発事例のご紹介
Debianを用いたCortex-M3マイコン開発事例のご紹介
 
gitを使う準備をしよう - 初級編
gitを使う準備をしよう - 初級編gitを使う準備をしよう - 初級編
gitを使う準備をしよう - 初級編
 

Mehr von Takashi Okamoto

RedmineとGitとスクラム
RedmineとGitとスクラムRedmineとGitとスクラム
RedmineとGitとスクラムTakashi Okamoto
 
PhoneGapでWebアプリをスマホアプリ化
PhoneGapでWebアプリをスマホアプリ化PhoneGapでWebアプリをスマホアプリ化
PhoneGapでWebアプリをスマホアプリ化Takashi Okamoto
 
jQuery Mobile で作る" 実用" スマフォアプリ
jQuery Mobile で作る" 実用" スマフォアプリjQuery Mobile で作る" 実用" スマフォアプリ
jQuery Mobile で作る" 実用" スマフォアプリTakashi Okamoto
 
jQuery MobileとPhoneGapでスマートフォンアプリ楽々クッキング
 jQuery MobileとPhoneGapでスマートフォンアプリ楽々クッキング jQuery MobileとPhoneGapでスマートフォンアプリ楽々クッキング
jQuery MobileとPhoneGapでスマートフォンアプリ楽々クッキングTakashi Okamoto
 
Kanonってなぁ~に?~楽々Kanonで華麗にお仕事しよう~
Kanonってなぁ~に?~楽々Kanonで華麗にお仕事しよう~Kanonってなぁ~に?~楽々Kanonで華麗にお仕事しよう~
Kanonってなぁ~に?~楽々Kanonで華麗にお仕事しよう~Takashi Okamoto
 
Shibuya.trac、DVCSの導入方法のご紹介
Shibuya.trac、DVCSの導入方法のご紹介Shibuya.trac、DVCSの導入方法のご紹介
Shibuya.trac、DVCSの導入方法のご紹介Takashi Okamoto
 
Kanonによるはじめてのアジャイル開発
Kanonによるはじめてのアジャイル開発Kanonによるはじめてのアジャイル開発
Kanonによるはじめてのアジャイル開発Takashi Okamoto
 
分散バージョン管理システムって何なん 20101218
分散バージョン管理システムって何なん 20101218分散バージョン管理システムって何なん 20101218
分散バージョン管理システムって何なん 20101218Takashi Okamoto
 

Mehr von Takashi Okamoto (11)

RedmineとGitとスクラム
RedmineとGitとスクラムRedmineとGitとスクラム
RedmineとGitとスクラム
 
PhoneGapでWebアプリをスマホアプリ化
PhoneGapでWebアプリをスマホアプリ化PhoneGapでWebアプリをスマホアプリ化
PhoneGapでWebアプリをスマホアプリ化
 
jQuery Mobile で作る" 実用" スマフォアプリ
jQuery Mobile で作る" 実用" スマフォアプリjQuery Mobile で作る" 実用" スマフォアプリ
jQuery Mobile で作る" 実用" スマフォアプリ
 
jQuery Mobileの基礎
jQuery Mobileの基礎jQuery Mobileの基礎
jQuery Mobileの基礎
 
jQuery MobileとPhoneGapでスマートフォンアプリ楽々クッキング
 jQuery MobileとPhoneGapでスマートフォンアプリ楽々クッキング jQuery MobileとPhoneGapでスマートフォンアプリ楽々クッキング
jQuery MobileとPhoneGapでスマートフォンアプリ楽々クッキング
 
Jqm20120804 publish
Jqm20120804 publishJqm20120804 publish
Jqm20120804 publish
 
Kanonってなぁ~に?~楽々Kanonで華麗にお仕事しよう~
Kanonってなぁ~に?~楽々Kanonで華麗にお仕事しよう~Kanonってなぁ~に?~楽々Kanonで華麗にお仕事しよう~
Kanonってなぁ~に?~楽々Kanonで華麗にお仕事しよう~
 
Shibuya.trac、DVCSの導入方法のご紹介
Shibuya.trac、DVCSの導入方法のご紹介Shibuya.trac、DVCSの導入方法のご紹介
Shibuya.trac、DVCSの導入方法のご紹介
 
Shibuya.tracの紹介
Shibuya.tracの紹介Shibuya.tracの紹介
Shibuya.tracの紹介
 
Kanonによるはじめてのアジャイル開発
Kanonによるはじめてのアジャイル開発Kanonによるはじめてのアジャイル開発
Kanonによるはじめてのアジャイル開発
 
分散バージョン管理システムって何なん 20101218
分散バージョン管理システムって何なん 20101218分散バージョン管理システムって何なん 20101218
分散バージョン管理システムって何なん 20101218
 

Opsta github-hundson 20120201

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