Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
150 changes: 7 additions & 143 deletions framework_development.org
Original file line number Diff line number Diff line change
Expand Up @@ -667,149 +667,7 @@ bundle exec guard init
**** 課題
- GitHubとTravis CIを連携させ,継続的統合を行いなさい
* 第8章 GitHubを用いた開発演習
** GitHubとは
*** GitHubについて
- Web サイト
- [[https://github.com/][GitHub]]
- [[http://github.co.jp/][GitHub Japan]]
- 主な機能
- ソースコード共有(Git)
- Issue
- Pull requests
- Wiki
- コード解析

*** GitHub Flow
- Git-flow
- GitHub が登場する以前、 Git-flow が提唱された
- [[http://nvie.com/posts/a-successful-git-branching-model/][A successful Git branching model » nvie.com]]
- GitHub flow
- GitHub により、よりシンプルで強力なワークフローが可能に
- [[http://scottchacon.com/2011/08/31/github-flow.html][GitHub Flow – Scott Chacon]]
- [[https://gist.github.com/Gab-km/3705015][GitHub Flow (Japanese translation)]]
- この演習では GitHub flow を学ぶ

*** GitHub flow におけるコンフリクトについて
- マージのコンフリクト
- GitHub に提出した Pull requests が自動的にマージできないこと
- 基本的な対処法
- コンフリクトは、コードの同じ箇所を複数の人が別々に編集すると発生
- 初心者は、演習の最初の方では「他人と同じファイルを編集しない」こと
にして、操作になれる
- 上達したら積極的にコンフリクトを起こしてみて、その解決方法を学ぶ
- Pull requests でコンフリクトが発生し、自動的にマージできない状態に
なったら、 その PR を送った人がコンフリクトを自分で解消する

*** Gemの作成とリポジトリへの登録
**** Gemの作成からGitHubへの登録まで

#+begin_src bash
bundle gem ychubachi_2016_gem
cd ychubachi_2016_gem/
git commit -m 'Initial commit'
git create
git push -u origin master
#+end_src

**** コラボレーターの追加

- GitHubのリポジトリをブラウザで開く.
- Settings -> Collaborators を選ぶ
- メンバーを招待する
- 招待されたメンバーには確認のメールが届くので,リンクをクリックする

**** コラボレーターがソースコードを入手する方法

下記の「ychubachi」の部分を代表者のアカウント名にする.
#+begin_src bash
git clone ychubachi/ychubachi_2016_gem
#+end_src

*** 基本的な git コマンド
**** 新しくブランチを作成してチェックアウトする
#+begin_src bash
git checkout -b some_new_feature
#+end_src

**** ブランチをGitHubにpushする
#+begin_src bash
git add .
git commit -m '(作業内容)'
git push -u origin some_new_feature
#+end_src

**** プルリクエストとマージ

- ブランチがGitHubに登録されたことを確認し,Pull requestを作成する
- Pull requestのレビューが済んだらマージする

**** ローカルのmaster を最新版にする

- GitHubで行ったマージをローカルに反映させる

#+begin_src bash
git checkout master
git pull
#+end_src

** ペアで行う GitHub
*** ペアで GitHub を使ってみよう
1. 隣同士でペアを組む
2. レポジトリを作成する(どちらか一方)
- =bundle gem= でひな形を作る(初心者は Gem でなくても良い)
3. レポジトリの Collaborators に登録する
4. レポジトリに対して、次のことを行う
- Pull requests を利用してみる
- Issue を利用してみる
- Wiki を利用してみる
*** 課題1
1. Pull request & merge の作業を各自5回以上行う
- ディスカッションやコードレビューもやってみる
2. Issue を5個以上登録する
- Pull request による Issue の close なども試す
3. Wiki でページを作成する
- ページを5つ程度作成して、リンクも貼る
4. 以上が終わったペアはグループでの演習に進む
- 講師に申告すること

** グループで行う GitHub
*** 課題:グループで GitHub (1)
1. ペアを2つ組み合わせて4人グループを作成する
- 課題1が終わったペアから順番にグループ編成
2. 作りたい Gem について相談して仕様を決める
- テーマはなんでも良い
- Web API を利用したコマンドラインツールなど
- ある程度の役割分担も決めておく
3. レポジトリを作成する(代表者1名)
- コラボレーターを追加する
4. 今まで学んだ知識を活用して Gem を開発する
*** 課題:グループで GitHub (2)
1. グルーブメンバーでGemを共同で作成する
2. GitHub Flow の実践
3. Travis CI によるテストの自動化
4. RubyGems.org への自動ディプロイ
5. その他、GitHub の各種機能の活用

** TODO 補足資料
*** Travis CI ステータスイメージ
**** Travis CIのテスト結果を分かりやすく共有したい
- Travis CIのステータスイメージをREADME.mdに埋め込むことができる
- [[http://docs.travis-ci.com/user/status-images/][Embedding Status Images - Travis CI]]
- [[http://blog.ruedap.com/2013/09/02/travis-ci-coveralls-code-climate-github-badge][Travis CIとCoverallsとCode Climateを使ってGitHubリポジトリにバッジを付ける - アインシュタインの電話番号]]
*** GitHubでのコンフリクトの解消方法
**** 前提
- new_feature ブランチで作業中であり、最新の更新は commit 済

**** 操作(一例)

#+begin_src bash
git checkout master # master をチェックアウト
git pull origin master # 手元の master を最新版にする
git checkout new_feature # 作業中のブランチに戻る
git merge master # この後、コンフリクトを修正する
git push origin new_feature # 作業中のブランチを再度、push
#+end_src

- [[https://github.com/ychubachi/github_practice][ychubachi/github_practice: GitHub入門]] 参照
* 第9章 まとめ
** この授業で取り上げたこと
*** Rubyのエコシステム(1)
Expand Down Expand Up @@ -876,3 +734,9 @@ git push origin new_feature # 作業中のブランチを再度、push
- [[https://rubygems.org/][RubyGems.org | your community gem host]]
- このページの解説
- [[http://guides.rubygems.org/rubygems-basics/][RubyGems Basics - RubyGems Guides]]
** TODO 補足資料
*** Travis CI ステータスイメージ
**** Travis CIのテスト結果を分かりやすく共有したい
- Travis CIのステータスイメージをREADME.mdに埋め込むことができる
- [[http://docs.travis-ci.com/user/status-images/][Embedding Status Images - Travis CI]]
- [[http://blog.ruedap.com/2013/09/02/travis-ci-coveralls-code-climate-github-badge][Travis CIとCoverallsとCode Climateを使ってGitHubリポジトリにバッジを付ける - アインシュタインの電話番号]]