Slide 1

Slide 1 text

Crocos, Inc. Sotaro Karasawa @sotarok http://facebook.com/sotarok PHP Conference Tokyo 2012 / Sep 15, 2012 Git x Pull Request νʔϜ։ൃ࠷ऴԞٛ

Slide 2

Slide 2 text

Git

Slide 3

Slide 3 text

CTO @ Crocos, Inc. Ethna git-daily ύʔϑΣΫτPHP ࣗݾ঺հ Sotaro Karasawa / @sotarok ฑ୔૱ଠ࿠ 1985/09/15 ੜ·Ε

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

Crocos, Inc (Ϋϩίε) FacebookΛத৺ʹιʔγϟϧάϥϑΛར༻͠ ͨΞϓϦέʔγϣϯ։ൃ ઃཱ 2011/2 2012/8 ~ Yahoo! JAPAN http://crocos.co.jp/ http://www.facebook.com/Crocos.Inc

Slide 6

Slide 6 text

Git Λ࢖ͬͨ։ൃ

Slide 7

Slide 7 text

Git Ҡߦ ʹ͍ͭͯߟ͑Δ

Slide 8

Slide 8 text

svn up git pull

Slide 9

Slide 9 text

svn ci git push

Slide 10

Slide 10 text

Ͱ͸ͳ͍ʂ

Slide 11

Slide 11 text

Gitʹ Ҡߦ͢Δ ͱ͸

Slide 12

Slide 12 text

Git ʹҠߦ͢Δͱ͸ɺ ͋Δ͍͸ Git Λ࢖ͬͯ։ൃΛ͢Δ͜ͱ͸ svn ʹରԠ͢ΔίϚϯυΛ֮͑Δ͜ͱͰ ͸ͳ͘ɺ Git Λ࠷େݶ׆༻Ͱ͖Δ։ൃϑϩʔΛߟ ͑ɺνʔϜ։ൃʹద༻͢Δ͜ͱͰ͋Δ

Slide 13

Slide 13 text

Git Λ࠷େݶ׆༻Ͱ͖Δ։ൃϑϩʔͱ͸ʁ

Slide 14

Slide 14 text

ɾϩʔΧϧͰؾܰʹίϛοτ ɾϩʔΧϧͰؾܰʹϒϥϯνΛ੾Δ ɾݡ͘ɺߴ଎ͳϚʔδ Git Λ࠷େݶ׆༻Ͱ͖Δ։ൃϑϩʔͱ͸ʁ

Slide 15

Slide 15 text

ɾϩʔΧϧͰؾܰʹίϛοτ ɾϩʔΧϧͰؾܰʹϒϥϯνΛ੾Δ ɾݡ͘ɺߴ଎ͳϚʔδ Git Λ࠷େݶ׆༻Ͱ͖Δ։ൃϑϩʔͱ͸ʁ ͜ΕΛੜ͔ͨ͠ϒϥϯνઓུ

Slide 16

Slide 16 text

Git ͷϒϥϯνઓུ

Slide 17

Slide 17 text

ͲͷΑ͏ʹϒϥϯνΛ੾Γɺ ɾ೔ʑͷ։ൃ ɾϦϦʔε ɾۓٸରԠ ͳͲΛ͜ͳ͔͢ ϒϥϯνઓུͬͯʁ

Slide 18

Slide 18 text

Git ϒϥϯνઓུͷ ϕετϓϥΫςΟεͷͻͱͭ A Successful Git Branching Model http://nvie.com/posts/a-successful-git-branching- model/ ೔ຊޠ༁ http://keijinsonyaban.blogspot.jp/2010/10/ successful-git-branching-model.html

Slide 19

Slide 19 text

No content

Slide 20

Slide 20 text

master develop release feature hotfix

Slide 21

Slide 21 text

master ৗʹɺ࠷৽ͷ҆ఆͨ͠ ιʔείʔυ͕खʹೖΔ (ϦϦʔε͞Εͨίʔυ)

Slide 22

Slide 22 text

develop ೔ʑͷ։ൃΛߦ͏ merge

Slide 23

Slide 23 text

release ϦϦʔεલͷ ֬ೝΛߦ͏ ඞཁ͕͋Ε͹ मਖ਼͢Δ release/1.0.2 ྫ:

Slide 24

Slide 24 text

release ϦϦʔεલ࠷ऴ֬ೝ

Slide 25

Slide 25 text

release ෆ۩߹ൃݟ मਖ਼ίϛοτ

Slide 26

Slide 26 text

release ϦϦʔεϓϩηεʹೖͬ ͯ΋ɺ։ൃΛܧଓͰ͖Δ

Slide 27

Slide 27 text

release मਖ਼׬ྃɺ׬੒͠ ͨιʔεΛ masterʹmerge

Slide 28

Slide 28 text

release मਖ਼ͨ݁͠ՌΛ developʹ΋൓ө

Slide 29

Slide 29 text

feature ෳ਺ͷҟͳΔ ػೳΛฏߦͯ͠ ։ൃΛਐΊΔ

Slide 30

Slide 30 text

feature ׬੒ͨ͠Β developʹmerge feature/hoge

Slide 31

Slide 31 text

feature ಉ࣌ʹ͍ͭ͘Ͱ΋ฏ ߦͯ͠࡞ۀͰ͖Δ feature/hoge feature/fuga

Slide 32

Slide 32 text

hotfix develop ͷ ׬੒Λ଴ͨͣʹ master ͷ मਖ਼͕͍ͨ͠ʂ

Slide 33

Slide 33 text

hotfix

Slide 34

Slide 34 text

hotfix master͔Β ௚઀ϒϥϯνΛ੾ͬ ͯमਖ਼

Slide 35

Slide 35 text

hotfix मਖ਼͕ऴΘͬͨΒ masterʹϚʔδ͠ ͯϦϦʔε

Slide 36

Slide 36 text

hotfix ౰વมߋ಺༰͸ developʹ΋൓ө

Slide 37

Slide 37 text

No content

Slide 38

Slide 38 text

Git ͷͨΊʹɺΑ͘ߟ͑ΒΕͨ ϒϥϯνӡ༻Ϟσϧ ༷ʑͳӡ༻ํ๏ʹɺॊೈʹରԠՄೳ A Successful Git Branching Model

Slide 39

Slide 39 text

gitflow nvieࢯۘ੡ɻ git-daily ੿࡞ɻ WebαʔϏε։ൃ޲͚ʹΞϨϯδ A Successful Git Branching Model Λ࣮ݱ͢Δπʔϧ

Slide 40

Slide 40 text

͚ͩͲ... ඞͣ͜ͷ௨Γ΍Βͳ͚Ε͹͍͚ͳ͍͜ͱ ͸ͳ͍ ͜ΕΛࢀߟʹɺࣗ෼ͷνʔϜͰͷӡ༻ϑ ϩʔʹ߹͏Α͏ʹΞϨϯδ A Successful Git Branching Model ϒϥϯνӡ༻ϞσϧͷϕετϓϥΫςΟε

Slide 41

Slide 41 text

ɾසൟʹϦϦʔε͞ΕΔWebαʔϏε ɾ͍͍ͪͪόʔδϣϯ൪߸͚ͭͳ͍ ɾ͍͍ͪͪλάΛ͚ͭͳ͍ ɾ೔෇ͰϦϦʔεϒϥϯν ɾϦϞʔτ࿈ܞ(νʔϜӡ༻)Λߟྀ ɾPHP੡ $ pear install openpear/git_daily git-daily ΞϨϯδ ... ͨͱ͑͹

Slide 42

Slide 42 text

Pull Request Λ࢖ͬͨ։ൃϑϩʔ

Slide 43

Slide 43 text

Pull Request ͱ͸ ɾGitHub ͱ͔ʹ͋Δ΍ͭ A ͕ॻ͍ͨίʔυʹରͯ͠ ... Bʮ͜Μͳػೳ͕ཉ͍͔͠Β͜ΜͳมߋΛ ॻ͍ͯΈͨΑɻͱΓ͜ΜͰʂʯ AʮOKɺpull ͠·͢ʯ Έ͍ͨͳ΍ͭ

Slide 44

Slide 44 text

Pull Request ͷԿ͕ྑ͍͔ ʮPull Requestʯ ͸Φʔϓϯιʔεʹݶ Βͣ࢖͑Δ༏Εͨ։ൃϑϩʔͩ http://d.hatena.ne.jp/sotarok/20120219/1329581585 खલຯḩͰ͕͢ɺ ੋඇಡΜͰ͍ͩ͘͞ʂ

Slide 45

Slide 45 text

ίʔυͷมߋ ෳ਺ਓͰ։ൃ͢Δ΋ͷͰ͋Ε͹ɺ ʮଞਓ͕ॻ͍ͨίʔυʯ Λมߋ͠ͳ͚Ε͹͍͚ͳ͍λΠϛϯά͕ ඞͣ͋Δ

Slide 46

Slide 46 text

(1) ґཔλΠϓ

Slide 47

Slide 47 text

(2) ׬શ෼཭૿৩λΠϓ

Slide 48

Slide 48 text

(3) উखʹมߋλΠϓ

Slide 49

Slide 49 text

(4) Pull Request λΠϓ

Slide 50

Slide 50 text

ϒϥϯνઓུʹ Pull Request Λ ૊ΈࠐΉ

Slide 51

Slide 51 text

feature/hoge feature/fuga

Slide 52

Slide 52 text

feature/hoge feature/fuga mergeલʹ pull request ϨϏϡʔ mergeલʹ pullrequest ͰϨϏϡʔ

Slide 53

Slide 53 text

ࡉ෼Խ͞Εͨ ɹɹίʔυϨϏϡʔ

Slide 54

Slide 54 text

௒ޮՌత

Slide 55

Slide 55 text

Pull Request Ϛʔδ࣌ͷ ϨϏϡʔ͸ͳͥޮՌత͔ ɾมߋͷίϯςΩετ͕໌֬ ౰વɺਖ਼͘͠ feature ϒϥϯν͕ӡ༻͞Ε͍ͯΔ͜ ͱ͸લఏͱͳΔɻܒ໤׆ಈ͸ඞཁɻ ɾখ͞ͳpatch ϨϏϡʔ͢Δର৅ͷίʔυ͸খ͚͞Ε͹খ͍͞΄ ͲɺϨϏϡʔίετ͸Լ͕Δ

Slide 56

Slide 56 text

Pull Request ͷԿ͕ྑ͍͔ (·ͱΊ) ɾύονͷ΍ΓͱΓ͕ՄࢹԽ͞ΕɺΦʔ ϓϯͰɺه࿥࢒Δ ɾ ֘౰ͷίʔυͷ੹೚Λ࣋ͭਓ͕͍Δ ɾมߋ͞ΕΔίʔυΛݩʹٞ࿦͕Ͱ͖Δ ɾখ͞ͳpatchͰ࣭ͷߴ͍ϨϏϡʔ ɾϦϑΝΫλ

Slide 57

Slide 57 text

Pull Request Λఏڙ͢ΔγεςϜ ɾGitHub (༗ྉͰprivateϦϙδτϦ) ඇਪ঑ɻprivate ϦϙδτϦɺEnterprise ΑΓ͍҆ ͚Ͳ ... མͪͯΔͱϦϦʔεͰ͖ͳ͍ΑͶ ɾGitHub Enterprise ͓͕ۚ͋ΔͳΒΦεεϝɻ ɾGitLab ແྉɻϝϯς͸େมɻMerge Requestɻଟগόάͬ ͯ΋ෆຬΛݴΘͳ͍ খن໛ͳνʔϜͳΒΦεεϝɻ

Slide 58

Slide 58 text

Pull Request Λఏڙ͢ΔγεςϜ GHE GitLab Ձ֨ $21/user/݄ ແྉ ϝϯςφϯείετ ௿͍ (ແ Ͱ͸ͳ͍) ߴ͍ Repository Viewer ˕ ˕ Network Chart ˕ ˕ User Namespace / Fork ˕ × Pull Request ˕ ˕ Auto Merge (Web͔Β) ˕ ˕

Slide 59

Slide 59 text

Pull Request Λఏڙ͢ΔγεςϜ GHE GitLab Ձ֨ $21/user/݄ ແྉ ϝϯςφϯείετ ௿͍ (ແ Ͱ͸ͳ͍) ߴ͍ Repository Viewer ˕ ˕ Network Chart ˕ ˕ User Namespace / Fork ˕ × Pull Request ˕ ˕ Auto Merge (Web͔Β) ˕ ˕ EJGGϏϡʔ มߋϑΝΠϧϦετɾEJGGϏϡʔ ίϝϯτ ߦίϝϯτ 8FCΠϯλʔϑΣΠε͔ΒͷࣗಈϚʔδ ϚʔδޙࣗಈΫϩʔζ

Slide 60

Slide 60 text

GitLab

Slide 61

Slide 61 text

ΫϩίεͰͷࣄྫ

Slide 62

Slide 62 text

GitLab ಋೖ & Pull Request ඞਢʹ ɾجຊతʹ feature ϒϥϯνΛͭ͘Δ ʢ͜Ε͸ͦΕҎલ͔ΒͰ͖͍ͯͨʣ ɾ2ਓ1૊ (1ਓͱϦʔμʔͱܾΊΔ) ͰνʔϜΛ࡞Γɺඞ ͣνʔϜ಺ϨϏϡʔΛ͢Δ ɾϦʔμʔಉ࢜͸ޓ͍ʹϨϏϡʔ

Slide 63

Slide 63 text

ଟஈ feature ϒϥϯν feature/hoge ϨϏϡʔίετͷ૿େ ɾ͓͓͖ͳϒϥϯν ɾͰ͖ΔݶΓɺϒϥϯν͸େ͖͘͠ͳ͍ ɹʢޙड़ʣ ɾ͚ͩͲɺେ͖͘ͳͬͯ͠·͏৔߹͕͋ Δ →ϨϏϡʔίετͷ૿େɾϙΠϯτ͕ζ ϨΔ → Pull Request ҙຯͳ͍

Slide 64

Slide 64 text

ଟஈ feature ϒϥϯν feature/hoge feature/hoge-admin feature/hoge-batch mergeલʹ pull request ϨϏϡʔ mergeલʹ pull request ϨϏϡʔ

Slide 65

Slide 65 text

݁Ռ

Slide 66

Slide 66 text

ࣗ෼ͷ୲౰Ҏ֎ͷ ෦෼ͷ࣮૷ɾ࢓༷ͷ ೺Ѳ͕Ͱ͖ΔΑ͏ʹͳΔ େࣄͳ͜ͱ͔ͩΒ΋͏౓

Slide 67

Slide 67 text

͓ޓ͍ʹɺͩΕ͕ Ͳ͏͍͏ίʔυΛ ॻ͘ͷ͔ΛΘ͔Δ Α͏ʹͳΔ େࣄͳ͜ͱ͔ͩΒ΋͏౓

Slide 68

Slide 68 text

ίϐϖݩ͝ͱ ᓲ໓͢Δػձ͕Ͱ͖ͨ

Slide 69

Slide 69 text

͏·͍͘͘ίπ

Slide 70

Slide 70 text

1. Ͱ͖Δ͚ͩࡉ͔͘ϦϦʔε

Slide 71

Slide 71 text

2. খ͞ΊͷνʔϜʹ෼ׂ͢Δ

Slide 72

Slide 72 text

࠷ޙʹ

Slide 73

Slide 73 text

GitΛ͔ͭͬͨνʔϜ։ൃ ɾʮSVNΛஔ͖׵͑ΔʯͰ͸ͳ͍ ɾ։ൃϑϩʔ͔Βߏங͠௚͢ ɾͥͻ Pull Request ϕʔεͷ։ൃΛ ɾେ͖ͳձࣾͰ͸ɺখ͞ͳϓϩδΣΫτ͔Β Ҡߦͯ͠ܒ໤͍ͯ͘͠ͳͲɺਐΊํʹ޻෉͕ ඞཁ

Slide 74

Slide 74 text

ਖ਼ղ͸ͳ͍ ɾࣄྫ͸͋͘·Ͱࣄྫ ɾ૊৫ʹ͋ͬͨ΍Γ͔ͨΛݟ͚ͭΑ͏ʂ ɾ͖ͬ͞ͷ@halt͞Μͷ࿩ͱ͔ʂ ɾΠέͯͳ͍ͱ͜Ζ͸ͲΜͲΜվળ ɾ։ൃϑϩʔ/ۀ຿ϑϩʔ͸ৗʹݟ௚͢ ɾͥͻɺϊ΢ϋ΢ͷڞ༗͠·͠ΐ͏ʂ

Slide 75

Slide 75 text

࠷ޙʹ... ΤϯδχΞืू͍ͯ͠·͢ʂʂ ָ͍͠Αʂʂ ࣭͝໰ʁ strk.jp/w ʢ←ʂ