• Save
こわくないプルリク
Upcoming SlideShare
Loading in...5
×
 

こわくないプルリク

on

  • 3,572 views

Github の Pull Request にフォーカスした Overview.

Github の Pull Request にフォーカスした Overview.
kanazawa.rb meetup 10 発表資料。

Statistics

Views

Total Views
3,572
Views on SlideShare
3,530
Embed Views
42

Actions

Likes
6
Downloads
0
Comments
0

4 Embeds 42

http://uokada.tumblr.com 28
http://mym.corp.yahoo.co.jp 7
https://twitter.com 4
https://www.chatwork.com 3

Accessibility

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

こわくないプルリク こわくないプルリク Presentation Transcript

  • こわくないプルリクPull Request is not afraid2013.06.14 - kanazawa.rb #10
  • Githubhttp://github.com
  • Pull Request
  • Pull Request
  • なにするもの?自分のコードを取り込んでもらう手続き
  • こわいの?迷惑をかける可能性があるのでちょっとびびる
  • こわいの?こわくはない(迷惑の中身を知れば)
  • Lets Start
  • ルール• 分岐元が同じブランチどうしで使える• 以上
  • Fork は?Fork は必須ではないむしろ一人でもできる
  • masterworkAAB1. checkout -b work2. commit
  • AABマージしてmasterwork1. checkout -b work2. commit
  • AABいいよB3. mergemasterwork1. checkout -b work2. commit
  • Shared Repository Model• 共用リポジトリで利用• Collaborators• Organizations
  • ABBA B4. pushA1. clone5. mergemasterwork2. checkout -b work3. commit
  • Fork & Pull Model• User 間で利用
  • A BA1. forkBA BA6. pullmasterworkmaster5. push2. clone3. checkout -b work4. commit
  • Send Pull Request
  • Send Pull Request
  • Send Pull Request
  • Send Pull Request
  • Receive Pull Request
  • Receive Pull Request
  • Merge Pull Request
  • Merge Pull Request
  • まったく簡単だ
  • 迷惑パターン
  • 迷惑パターン• Pull Request 後のコミット• コンフリクト• 大量のコミット
  • Pull Request 後のコミット• Pull Request の対象はブランチ• クローズ前に追加コミットすると• Pull Request の対象に含まれてしまう• Pull Request 先に Notification が飛ぶ• コードレビュー&修正反映の用途に対応するため
  • ABA B4. pushA1. clonemasterwork2. checkout -b work3. commit
  • ABA B4. pushA1. clonemasterwork2. checkout -b work3. commitCCDD5. commit 7. commit6. push 8. push
  • Pull Request 後のコミット• コードレビュー目的• まったく問題ない利用法• 別機能の開発目的• 問題のある(迷惑な)利用法• 別ブランチで作業をすることで解決
  • コンフリクト• 元ソースの変更に追従していないと発生する• こまめな pull & rebase で解決
  • ABXA B4. pushA1. clone5. mergemasterwork2. checkout -b work3. commitcommit
  • BmasterABXA6. push1. clone7. mergemasterwork2. checkout -b work3. commitBBX4. pullAcommitX5. rebase
  • A XA1. forkBA BA6. pullmasterworkmaster5. push2. clone3. checkout -b work4. commitcommit
  • B5. rebasemasterA XA1. forkBA XA8. pullmasterworkmaster7. push2. clone3. checkout -b work4. commitcommitBX5. pullB
  • B5. rebasemasterA XA1. forkBA XA8. pullmasterworkmaster7. push2. clone3. checkout -b work4. commitcommitBX5. pullB
  • Tips : Fork 元から pull1. git remote add upstream https://github.com/<org>/<rep>.git2. git checkout master3. git pull upstream master
  • B5. rebasemasterA XA1. forkBA XA8. pullmasterworkmaster7. push2. clone3. checkout -b work4. commitcommitBX5. pullB
  • Tips : rebase ? merge ?• merge ではなく rebase• 後述のコミットの集約を実現するため• rebase 前にブランチを push していた場合• rebase 後に push する際は -f オプションが必要• rebase の功罪もあり merge 派もいる• コミットの集約はしない運用
  • 大量のコミット• コミット数が大量にある Pull Request• コーディング作業時に細かにコミットしていればよくある状況
  • A PA B4. pushA1. clone5. mergemasterwork2. checkout -b work3. commiiiiiiiiiiitsBBBBBBBBBBBBBBPBBBBBBBBBBBBBBBPPPPPPPPPPPPPPP
  • 大量のコミット• Pull Request 先でのコミットログ肥大化• 差分を確認するのが困難になる• rebase -i で1コミットにまとめることで解決1. git checkout work2. git rebase -i master3. pick, squash, squash, squash...
  • AA5. pushA1. clone6. mergemasterwork3. commiiiiiiiiiiitsBPPPP2. checkout -b work4. rebase -i (squash)
  • Tips : Pull Request Branch• 作業用ブランチの履歴を残したい場合• Pull Request 専用ブランチを作成する1. git checkout work2. git checkout -b pr-work3. git rebase -i master4. pick, squash, squash, squash...
  • Conclusion• Pull Request は怖くない• 機能毎のブランチング• こまめな pull & rebase• コミットの集約(rebase -i)
  • Conclusion• Pull Request は怖くない• 機能毎のブランチング• こまめな pull & rebase• コミットの集約(rebase -i)"絶対" のルールはない(なにがおこるか把握して使えばよい)
  • まずは自分のリポジトリでブランチさえ切ればすぐ試せる!
  • Thank youTomokazu Kiyoharahttp://github.com/kiyoharahttp://facebook.com/tomokazu.kiyohara
  • Extra• http://blog.qnyp.com/2013/05/28/pull-request-for-github-beginners/• http://kik.xii.jp/archives/179• http://d.hatena.ne.jp/hnw/20110528