Slide 1

Slide 1 text

. . . . . . ʮGitʹΑΔόʔδϣϯ؅ཧʯͷ ࣥචऀʹΑΔGitษڧձ͔ߨԋձ git bundle ʹ͍ͭͯޠͬͯΈΔ ؠদ ৴༸ [email protected] (@iwamatsu) 2012 ೥ 2 ݄ 28 ೔

Slide 2

Slide 2 text

. . . . . . ຊ͔Βফ͞ΕͨηΫγϣϯ: git bundle git bundle.....

Slide 3

Slide 3 text

. . . . . . ϦϙδτϦ΁ͷΞΫηε • Git ͸෼ࢄϦϙδτϦܕ

Slide 4

Slide 4 text

. . . . . . ϦϙδτϦ΁ͷΞΫηε • Git ͸෼ࢄϦϙδτϦܕ • Git ͸ϦϙδτϦ΁ͷΞΫηεํ๏͕ଟ༷

Slide 5

Slide 5 text

. . . . . . ϦϙδτϦ΁ͷΞΫηε • Git ͸෼ࢄϦϙδτϦܕ • Git ͸ϦϙδτϦ΁ͷΞΫηεํ๏͕ଟ༷ • gitɺWebDAVɺfileɺrsyncɺsshɺmailɺetcɻ

Slide 6

Slide 6 text

. . . . . . GitΛ࢖ͬͨ։ൃ

Slide 7

Slide 7 text

. . . . . . GitΛ࢖ͬͨ։ൃ A:ʮϦϙδτϦͷߋ৽͍ͨ͠ͷͰύον௖ଷɻ ʯ

Slide 8

Slide 8 text

. . . . . . GitΛ࢖ͬͨ։ൃ A:ʮϦϙδτϦͷߋ৽͍ͨ͠ͷͰύον௖ଷɻ ʯ B:ʮαʔόʹϦϙδτϦஔ͍ͱ͍͔ͨΒ͔ͦ͜Β pull Ͱ͖ΔΑɻ ʯ

Slide 9

Slide 9 text

. . . . . . GitΛ࢖ͬͨ։ൃ A:ʮϦϙδτϦͷߋ৽͍ͨ͠ͷͰύον௖ଷɻ ʯ B:ʮαʔόʹϦϙδτϦஔ͍ͱ͍͔ͨΒ͔ͦ͜Β pull Ͱ͖ΔΑɻ ʯ A:ʮ͋ʔɺ͔͜͜Βͦ͜ͷωοτϫʔΫʹܨ͛Β Εͳ͍ΜͩΑͶɻ ʯ

Slide 10

Slide 10 text

. . . . . . GitΛ࢖ͬͨ։ൃ A:ʮϦϙδτϦͷߋ৽͍ͨ͠ͷͰύον௖ଷɻ ʯ B:ʮαʔόʹϦϙδτϦஔ͍ͱ͍͔ͨΒ͔ͦ͜Β pull Ͱ͖ΔΑɻ ʯ A:ʮ͋ʔɺ͔͜͜Βͦ͜ͷωοτϫʔΫʹܨ͛Β Εͳ͍ΜͩΑͶɻ ʯ Bʮ͸͊ʁ(AA ུʯ

Slide 11

Slide 11 text

. . . . . . GitΛ࢖ͬͨ։ൃ Ͳ͜Ͱ΋ LAN ΍ΠϯλʔωοτͰͭͳ͕͍ͬͯ Δͱ͸ݶΒͳ͍ɻ

Slide 12

Slide 12 text

. . . . . . LAN΍Πϯλʔωοτܦ༝ͰϦϙδτ ϦΛߋ৽Ͱ͖ͳ͍

Slide 13

Slide 13 text

. . . . . . LAN΍Πϯλʔωοτܦ༝ͰϦϙδτ ϦΛߋ৽Ͱ͖ͳ͍ • ࣾ಺/άϧʔϓձࣾͰͷ͕͠ΒΈ

Slide 14

Slide 14 text

. . . . . . LAN΍Πϯλʔωοτܦ༝ͰϦϙδτ ϦΛߋ৽Ͱ͖ͳ͍ • ࣾ಺/άϧʔϓձࣾͰͷ͕͠ΒΈ • ։ൃִ཭෦԰

Slide 15

Slide 15 text

. . . . . . LAN΍Πϯλʔωοτܦ༝ͰϦϙδτ ϦΛߋ৽Ͱ͖ͳ͍ • ࣾ಺/άϧʔϓձࣾͰͷ͕͠ΒΈ • ։ൃִ཭෦԰ • ϋʔυ΢ΣΞͷ੍ݶʢRS232C ͔͠ແ͍ͱ͔ʣ

Slide 16

Slide 16 text

. . . . . . LAN΍Πϯλʔωοτܦ༝ͰϦϙδτ ϦΛߋ৽Ͱ͖ͳ͍ • ࣾ಺/άϧʔϓձࣾͰͷ͕͠ΒΈ • ։ൃִ཭෦԰ • ϋʔυ΢ΣΞͷ੍ݶʢRS232C ͔͠ແ͍ͱ͔ʣ • ਅ໘໨ͳ࿩ɺωοτϫʔΫ࢖͏ΑΓૣ͍৔߹ɻ

Slide 17

Slide 17 text

. . . . . . LAN΍Πϯλʔωοτܦ༝ͰϦϙδτ ϦΛߋ৽Ͱ͖ͳ͍ • ࣾ಺/άϧʔϓձࣾͰͷ͕͠ΒΈ • ։ൃִ཭෦԰ • ϋʔυ΢ΣΞͷ੍ݶʢRS232C ͔͠ແ͍ͱ͔ʣ • ਅ໘໨ͳ࿩ɺωοτϫʔΫ࢖͏ΑΓૣ͍৔߹ɻ • ͦ͜ͰεχʔΧʔωοτϫʔΫΛ࢖͏ɻ

Slide 18

Slide 18 text

. . . . . . εχʔΧʔωοτϫʔΫ ෳ਺୆ͷίϯϐϡʔλ͕͋ͬͯ΋ɺ௨৴ωοτ ϫʔΫ͕ಋೖ͞Ε͍ͯͳ͍ঢ়ଶΛεχʔΧʔωο τͱ͍͏ɻ͜ͷݴ༿͸͋Δίϯϐϡʔλ͔Βผͷ ίϯϐϡʔλʹσʔλΛૹΔඞཁ͕Ͱ͖ͨͱ͖ʹ ϑϩοϐʔσΟεΫ΍ MO ͳͲΛ࣋ͬͨਓ͕ؒ૸ Γճ͍ͬͯΔঢ়ଶΛൽ೑ͬͯʮεχʔΧʔΛཤ͍ ͨਓؒΛഔհʹͨ͠ωοτϫʔΫʯͱ͍͏ҙຯͰ ͚ͭΒΕͨɻ1 1Wikipedia:εχʔΧʔωοτϫʔΫ͔Βൈਮ

Slide 19

Slide 19 text

. . . . . . ϦϙδτϦ΁ͷΞΫηε • Git ͸෼ࢄϦϙδτϦܕ

Slide 20

Slide 20 text

. . . . . . ϦϙδτϦ΁ͷΞΫηε • Git ͸෼ࢄϦϙδτϦܕ • Git ͸ϦϙδτϦ΁ͷΞΫηεํ๏͕ଟ༷

Slide 21

Slide 21 text

. . . . . . ϦϙδτϦ΁ͷΞΫηε • Git ͸෼ࢄϦϙδτϦܕ • Git ͸ϦϙδτϦ΁ͷΞΫηεํ๏͕ଟ༷ • gitɺWebDAVɺfileɺrsyncɺsshɺmailɺetcɻ

Slide 22

Slide 22 text

. . . . . . ϦϙδτϦ΁ͷΞΫηε • Git ͸෼ࢄϦϙδτϦܕ • Git ͸ϦϙδτϦ΁ͷΞΫηεํ๏͕ଟ༷ • gitɺWebDAVɺfileɺrsyncɺsshɺmailɺetcɻ • ΋ͪΖΜεχʔΧʔωοτϫʔΫ΋ͩͬʂ

Slide 23

Slide 23 text

. . . . . .

Slide 24

Slide 24 text

. . . . . . εχʔΧʔωοτϫʔΫରԠ • εχʔΧʔωοτϫʔΫΛ࢖͏ʹ͸ʁ

Slide 25

Slide 25 text

. . . . . . εχʔΧʔωοτϫʔΫରԠ • εχʔΧʔωοτϫʔΫΛ࢖͏ʹ͸ʁ • git bundle Λ࢖͏ɻ

Slide 26

Slide 26 text

. . . . . . git bundle • bundle : ଋɺଋঢ়ߏ଄

Slide 27

Slide 27 text

. . . . . . git bundle • bundle : ଋɺଋঢ়ߏ଄ • ओͳػೳ: ίϛοτΛଋʹవΊͯɺϑΝΠϧ ʹग़ྗ͢Δ

Slide 28

Slide 28 text

. . . . . . git bundle

Slide 29

Slide 29 text

. . . . . . git bundle

Slide 30

Slide 30 text

. . . . . . bundle Πϝʔδ࡞੒ git bundle create $ git bundle create ../update.bundle v1.0..v2.0 Counting objects: 20, done. Delta compression using up to 4 threads. Compressing objects: 100% (13/13), done. Writing objects: 100% (19/19), 1.24 KiB, done. Total 19 (delta 10), reused 0 (delta 0)

Slide 31

Slide 31 text

. . . . . . git bundle

Slide 32

Slide 32 text

. . . . . . εχʔΧʔωοτ ࡞੒͞ΕͨΠϝʔδΛUSBϝϞϦͳͲʹ ೖΕͯɺϦϙδτϦઌʹҠಈ

Slide 33

Slide 33 text

bundle Πϝʔδద༻ . . . . . .

Slide 34

Slide 34 text

bundle Πϝʔδద༻ ͦͷલʹ bundle Πϝʔδݕূ . . . . . .

Slide 35

Slide 35 text

. . . . . . bundle Πϝʔδݕূ git bundle verify

Slide 36

Slide 36 text

. . . . . . bundle Πϝʔδݕূ git bundle verify

Slide 37

Slide 37 text

. . . . . . bundle Πϝʔδݕূ git bundle verify

Slide 38

Slide 38 text

. . . . . . bundle Πϝʔδݕূ $ git bundle verify ../update.bundle The bundle contains 1 ref 187a8a3a13118a52d799998219e9c8f25e1bf9a3 refs/tags/v2.0 The bundle requires these 1 ref 13f2c31dddc39cb0ae6814cc83ce91f240914446 Add data1 ../update.bundle is okay

Slide 39

Slide 39 text

. . . . . . ݕূΤϥʔʹͳΔύλʔϯ

Slide 40

Slide 40 text

. . . . . . ݕূΤϥʔʹͳΔύλʔϯ

Slide 41

Slide 41 text

. . . . . . ݕূΤϥʔʹͳΔύλʔϯ

Slide 42

Slide 42 text

. . . . . . ݕূΤϥʔʹͳΔύλʔϯ ΤϥʔʹͳΔɻ $ git bundle verify ../update.bundle error: Repository lacks these prerequisite commits: error: 902bbbc4f0bfc2cec2335123cc590fa600a239c3 Add data1

Slide 43

Slide 43 text

. . . . . . ݕূΤϥʔʹͳΔύλʔϯ

Slide 44

Slide 44 text

bundle ΠϝʔδͷऔΓࠐΈ . . . . . .

Slide 45

Slide 45 text

. . . . . . bundle ΠϝʔδͷऔΓࠐΈ • git pull git pull ϦϞʔτϦϙδτϦ ϦϑΝϨϯε • git fetch git fetch ϦϞʔτϦϙδτϦ ϦϑΝϨϯε • git remote git remote update ϦϞʔτϦϙδτϦ໊

Slide 46

Slide 46 text

. . . . . . bundle ΠϝʔδͷऔΓࠐΈ • git pull git pull ϦϞʔτϦϙδτϦ ϦϑΝϨϯε • git fetch git fetch ϦϞʔτϦϙδτϦ ϦϑΝϨϯε • git remote git remote update ϦϞʔτϦϙδτϦ໊ • ϦϑΝϨϯεΛࢦఆ͢Δඞཁ͕͋Δ

Slide 47

Slide 47 text

. . . . . . bundle ΠϝʔδͷऔΓࠐΈ • git pull git pull ϦϞʔτϦϙδτϦ ϦϑΝϨϯε • git fetch git fetch ϦϞʔτϦϙδτϦ ϦϑΝϨϯε • git remote git remote update ϦϞʔτϦϙδτϦ໊ • ϦϑΝϨϯεΛࢦఆ͢Δඞཁ͕͋Δ

Slide 48

Slide 48 text

. . . . . . bundle Πϝʔδ಺ʹ͋ΔϦϑΝϨϯε Λग़ྗ git bundle list-heads

Slide 49

Slide 49 text

. . . . . . bundle Πϝʔδ಺ʹ͋ΔϦϑΝϨϯε Λग़ྗ $ git bundle list-heads ../update.bundle 187a8a3a13118a52d799998219e9c8f25e1bf9a3 refs/tags/v2.0 ../update.bundle ʹ͸ϦϑΝϨϯεͱͯ͠ refs/tags/v2.0 ͷΈؚ͕·Ε͍ͯΔ͜ͱ͕Θ ͔Δɻ

Slide 50

Slide 50 text

. . . . . . bundle ΠϝʔδͷऔΓࠐΈ • git pull git pull ϦϞʔτϦϙδτϦ ϦϑΝϨϯε • git fetch git fetch ϦϞʔτϦϙδτϦ ϦϑΝϨϯε • git remote git remote update ϦϞʔτϦϙδτϦ໊ • ϦϑΝϨϯεΛࢦఆ͢Δඞཁ͕͋Δ

Slide 51

Slide 51 text

. . . . . . bundle ΠϝʔδͷऔΓࠐΈ • git pull git pull ϦϞʔτϦϙδτϦ ϦϑΝϨϯε • git fetch git fetch ϦϞʔτϦϙδτϦ ϦϑΝϨϯε • git remote git remote update ϦϞʔτϦϙδτϦ໊ • ϦϑΝϨϯεΛࢦఆ͢Δඞཁ͕͋Δ • bundle ϑΝΠϧ͸ϦϞʔτϦϙδτϦͱͯ͠ ѻ͑Δ

Slide 52

Slide 52 text

. . . . . . git pull ϦϑΝϨϯεΛࢦఆ͠ͳ͍৔߹: $ git pull ../update.bundle fatal: Couldn’t find remote ref HEAD HEAD ͕ bunlde ϑΝΠϧʹؚ·Εͯͳ͍ͷͰΤ ϥʔʹͳΔɻ

Slide 53

Slide 53 text

. . . . . . git pull ϦϑΝϨϯεΛࢦఆͨ͠৔߹: $ git pull ../update.bundle refs/tags/v2.0 Receiving objects: 100% (19/19), done. Resolving deltas: 100% (10/10), done. From ../update.bundle * tag v2.0 -> FETCH_HEAD Updating c74b792..fea9e6f Fast-forward data3 | 1 + data4 | 1 + data5 | 1 + dataA | 1 + dataB | 1 + dataC | 1 + 6 files changed, 6 insertions(+), 0 deletions(-) create mode 100644 data3 ʢলུʣ

Slide 54

Slide 54 text

. . . . . . git pull

Slide 55

Slide 55 text

. . . . . . git pull

Slide 56

Slide 56 text

. . . . . . git pull • git pull → Ϛʔδ͕ى͖ΔՄೳੑɻ • ϦϞʔτϦϙδτϦͱͯ͠औΓѻ͏ͷ͕ΊΜ Ͳ͏͍͘͞ɻ FETCH HEAD Λ࢖ͬͯ࡞ۀ͢Δඞཁ͕͋Δɻ • HEAD ͕ͳ͍৔߹ɺϦϑΝϨϯεΛࢦఆ͢Δ ඞཁ͕͋Δɻ

Slide 57

Slide 57 text

. . . . . . git fetch $ git fetch ../update.bundle fatal: Couldn’t find remote ref HEAD $ git fetch ../update.bundle refs/tags/v2.0 Receiving objects: 100% (19/19), done. Resolving deltas: 100% (10/10), done. From ../update.bundle * tag v2.0 -> FETCH_HEAD

Slide 58

Slide 58 text

. . . . . . git-fetch

Slide 59

Slide 59 text

. . . . . . git fetch

Slide 60

Slide 60 text

. . . . . . git fetch • git fetch → Ϛʔδ͸ى͖ͳ͍ɻ • HEAD ͕ͳ͍৔߹ɺϦϑΝϨϯεΛࢦఆ͢Δ ඞཁ͕͋Δɻ

Slide 61

Slide 61 text

. . . . . . git remote $ git remote add bundle-data ../update.bundle $ git remote update bundle-data Fetching bundle-data From ../bundle-20120228 * [new tag] v2.0 -> v2.0

Slide 62

Slide 62 text

. . . . . . git remote

Slide 63

Slide 63 text

. . . . . . git remote

Slide 64

Slide 64 text

. . . . . . git remote • git remote → Ϛʔδ͸ى͖ͳ͍ • ϦϑΝϨϯεΛࢦఆ͢Δඞཁ͕ͳ ͍ɻ.git/config ͷ refspec ݟͯ͘ΕΔ • remote ʹઃఆ͓͚ͯ͠͹࣍ճ͔Β͸ϑΝΠϧ ίϐʔͯ͠ɺgit remote update Ͱ OK • git remote ࢖͍·͠ΐ͏

Slide 65

Slide 65 text

. . . . . . bundle ΠϝʔδͷऔΓࠐΈ ϩʔΧϧϦϙδτϦʹऔΓࠐΉ৔߹: • git pull • git fetch • git remote Λ࢖͏ɻ

Slide 66

Slide 66 text

. . . . . . ͦͷଞͷίϚϯυ • git bundle unbundle

Slide 67

Slide 67 text

. . . . . . git bundle unbundle Git ΦϒδΣΫτΛ git index-pack Λ࢖ͬͯ .git/objects ҎԼʹల։͢Δɻ $ git bundle unbundle ../update.bundle Git ΦϒδΣΫτਥޚ༻ୡπʔϧɻ fetch ͳͲ͸ඞཁͳ΋ͷ͚ͩΛरͬͯల։͢Δɻ

Slide 68

Slide 68 text

. . . . . . λά΍ϒϥϯν͸Ͳ͏͢Δͷʁ • bundle ࡞੒࣌ʹऔΓࠐΈ͍ͨλά΍ϒϥϯν Λࢦఆ͢Δ • શͯͷλά͸ --tags Λࢦఆ͢Δ • શͯͷϒϥϯν͸--branch Λࢦఆ͢Δ • શͯͷϦϑΝϨϯεΛऔΓࠐΈ͍ͨ৔߹ʹ͸ --all Λࢦఆ͢Δ

Slide 69

Slide 69 text

. . . . . . λά΍ϒϥϯν͸Ͳ͏͢Δͷʁ

Slide 70

Slide 70 text

. . . . . . λά΍ϒϥϯν͸Ͳ͏͢Δͷʁ $ git bundle create ../update.bundle v1.0..v2.0 \ --tags --branches

Slide 71

Slide 71 text

. . . . . . λά΍ϒϥϯν͸Ͳ͏͢Δͷʁ

Slide 72

Slide 72 text

. . . . . . ࣅͨΑ͏ͳػೳ git format-patch ͸Ͳ͏ ͳͷʁ • git format-patch : ύονΛ git send-email Ͱ ૹ৴Ͱ͖ΔܗࣜͰग़ྗ͢Δɻ

Slide 73

Slide 73 text

. . . . . . ࣅͨΑ͏ͳػೳ git format-patch ͸Ͳ͏ ͳͷʁ • git format-patch : ύονΛ git send-email Ͱ ૹ৴Ͱ͖ΔܗࣜͰग़ྗ͢Δɻ ໰୊: • େྔͷύονͰॲཧͱ؅ཧ͕ΊΜͲ͏͘ ͍͞ɻ • ώϡʔϚϯΤϥʔͰଞͷϦϙδτϦͱͷ੔߹ ੑ͕औΕͳ͘ͳΔՄೳੑ͕͋Δɻ • ϒϥϯνɺλάͳͲΛऔΓѻ͏͜ͱ͕Ͱ͖ ͳ͍ɻ

Slide 74

Slide 74 text

. . . . . . ͚Ͳɺ࢖͏͜ͱͳΜͯແ͍ΑͶʁ

Slide 75

Slide 75 text

. . . . . . ͚Ͳɺ࢖͏͜ͱͳΜͯແ͍ΑͶʁ ͔ͩΒϖʔδ࡟Δͱ͖ʹফ͞ΕͨΜͩΑ....

Slide 76

Slide 76 text

. . . . . . ͚Ͳɺ࢖͏͜ͱͳΜͯແ͍ΑͶʁ

Slide 77

Slide 77 text

. . . . . . ͚Ͳɺ࢖͏͜ͱͳΜͯແ͍ΑͶʁ ·ɺ·͔͞ tar ͰݻΊͯόοΫΞοϓͱ͔ͱ͔ ΍ͬͯͳ͍ΑͶ....

Slide 78

Slide 78 text

. . . . . . ϦϙδτϦͷόοΫΞοϓ bundle ։࢝ҐஔΛࢦఆ͠ͳ͍৔߹ɺҰ൪࠷ॳͷί ϛοτ͔Βࢦఆͨ͠ίϛοτ·ͰవΊͯ͘ΕΔɻ $ git bundle create ../backup.bundle HEAD --all

Slide 79

Slide 79 text

. . . . . . ϦϙδτϦͷόοΫΞοϓ

Slide 80

Slide 80 text

. . . . . . ϦϙδτϦͷόοΫΞοϓ

Slide 81

Slide 81 text

. . . . . . ϦϙδτϦͷόοΫΞοϓ Git ͷ git ϦϙδτϦΛ όοΫΞοϓͯ͠Έͨɻ ॲཧ/ѹॖํࣜ ॲཧ଎౓ αΠζ tar/gz 2.207s 37MB tar/xz 22.477s 36MB git bundle 3.531s 27MB

Slide 82

Slide 82 text

. . . . . . ϦϙδτϦͷόοΫΞοϓ Git ͷ git ϦϙδτϦΛ όοΫΞοϓͯ͠Έͨɻ ॲཧ/ѹॖํࣜ ॲཧ଎౓ αΠζ tar/gz 2.207s 37MB tar/xz 22.477s 36MB git bundle 3.531s 27MB git bundle େউརʂ

Slide 83

Slide 83 text

. . . . . . ·ͱΊ • Git ͸෼ࢄϦϙδτϦܕ

Slide 84

Slide 84 text

. . . . . . ·ͱΊ • Git ͸෼ࢄϦϙδτϦܕ • Git ͸ϦϙδτϦ΁ͷΞΫηεํ๏͕ଟ༷

Slide 85

Slide 85 text

. . . . . . ·ͱΊ • Git ͸෼ࢄϦϙδτϦܕ • Git ͸ϦϙδτϦ΁ͷΞΫηεํ๏͕ଟ༷ • εχʔΧωοτϫʔΫ΋ରԠ

Slide 86

Slide 86 text

. . . . . . ·ͱΊ • Git ͸෼ࢄϦϙδτϦܕ • Git ͸ϦϙδτϦ΁ͷΞΫηεํ๏͕ଟ༷ • εχʔΧωοτϫʔΫ΋ରԠ • git bundle ॏཁ • ϦϙδτϦόοΫΞοϓʹ͸ git bundle

Slide 87

Slide 87 text

. . . . . . ࣭໰ Կ͔࣭໰͸͋Γ·͔͢ʁ