Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Commit message will never die
Search
Koichi ITO
March 24, 2018
Technology
22
7.5k
Commit message will never die
Rails Developers Meetup 2018: day 1
(
https://techplay.jp/event/639872
)
Koichi ITO
March 24, 2018
Tweet
Share
More Decks by Koichi ITO
See All by Koichi ITO
Beyond the RuboCop Defaults
koic
3
2.7k
Minify Ruby Code
koic
2
2.1k
Permanent Agility
koic
37
7.5k
RuboCop: LSP and Prism
koic
3
4.1k
Organizational Pattern Hatching
koic
0
1.5k
A Practitioner's Journey from Ruby 1.8 to Present
koic
1
2k
A Story Featuring Right Hand Archetype
koic
0
1.1k
Without Practice, No Emergence
koic
4
2.4k
The Resurrection of the Fast Parallel Test Runner
koic
1
6.2k
Other Decks in Technology
See All in Technology
Amazon Personalizeのレコメンドシステム構築、実際何するの?〜大体10分で具体的なイメージをつかむ〜
kniino
1
100
10XにおけるData Contractの導入について: Data Contract事例共有会
10xinc
5
560
Oracle Cloud Infrastructureデータベース・クラウド:各バージョンのサポート期間
oracle4engineer
PRO
28
12k
Security-JAWS【第35回】勉強会クラウドにおけるマルウェアやコンテンツ改ざんへの対策
4su_para
0
170
CysharpのOSS群から見るModern C#の現在地
neuecc
1
3.1k
ノーコードデータ分析ツールで体験する時系列データ分析超入門
negi111111
0
410
[FOSS4G 2019 Niigata] AIによる効率的危険斜面抽出システムの開発について
nssv
0
310
Why App Signing Matters for Your Android Apps - Android Bangkok Conference 2024
akexorcist
0
120
地理情報データをデータベースに格納しよう~ GPUを活用した爆速データベース PG-Stromの紹介 ~
sakaik
1
150
インフラとバックエンドとフロントエンドをくまなく調べて遅いアプリを早くした件
tubone24
1
430
[FOSS4G 2024 Japan LT] LLMを使ってGISデータ解析を自動化したい!
nssv
1
210
フルカイテン株式会社 採用資料
fullkaiten
0
40k
Featured
See All Featured
The World Runs on Bad Software
bkeepers
PRO
65
11k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
16
2.1k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
159
15k
Building Applications with DynamoDB
mza
90
6.1k
KATA
mclloyd
29
14k
Fireside Chat
paigeccino
34
3k
Optimizing for Happiness
mojombo
376
70k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
33
1.9k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
47
5k
Speed Design
sergeychernyshev
24
610
Building a Modern Day E-commerce SEO Strategy
aleyda
38
6.9k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.3k
Transcript
$PNNJUNFTTBHFXJMMOFWFSEJF 4BU 3BJMTίϯτϦϏϡʔγϣϯ ͔ΒֶΜͩ (JU(JU)VCज़ ҏ౻ߒҰ !LPJD FTN 3BJMT%FWFMPQFST.FFUVQEBZ
άϥϯτΩϣαελϫʔ֊
None
None
None
None
None
ࠓͷ
IUUQTUXJUUFSDPNLPJDTUBUVT
SBJMTSBJMT 3FNPWFA"4.VMUJCZUFATVOJDPEFUBCMF
None
$POUFYU Կނඞཁ͔
$POUFYU Կނඞཁ͔ .FSJU ͲΜͳಘ͕
)PX ࣮ϙΠϯτ
)PX ࣮ϙΠϯτ ࣮ࡍ· ͩଓ͘
.FTVSF ܭଌ
.FTVSF ܭଌ Ϛʔδͯ͠Β͏ͨΊʹඞཁͳใΛ ඞཁͳ͚ͩ٧Ί͍ͯΔ
ͨΓલΛͨΓલʹ Step up your natural commit skill
,BUB
w5IFTFWFOSVMFTBHBJO w.Z3PDL)FSPFTJO +BQBO w(JU(JU)VCXPSLqPX "HFOEB
w5IFTFWFOSVMFTBHBJO w.Z3PDL)FSPFTJO +BQBO w(JU(JU)VCXPSLqPX "HFOEB
IUUQTDISJTCFBNTJPQPTUTHJUDPNNJU
4FQBSBUFTVCKFDUGSPNCPEZXJUIBCMBOLMJOF -JNJUUIFTVCKFDUMJOFUPDIBSBDUFST $BQJUBMJ[FUIFTVCKFDUMJOF %POPUFOEUIFTVCKFDUMJOFXJUIBQFSJPE 6TFUIFJNQFSBUJWFNPPEJOUIFTVCKFDUMJOF
8SBQUIFCPEZBUDIBSBDUFST 6TFUIFCPEZUPFYQMBJOXIBUBOEXIZWTIPX 5IFTFWFOSVMFTPGBHSFBU(JU DPNNJUNFTTBHF
IUUQTQPTUEDDIPXUPXSJUFBHJUDPNNJUNFTTBHF
None
৺ʹཹΊ͓͍͍ͯͯͩ͘͞ ͜Εࠓ·Ͱ ݴΘΕ͖ͯͨ ͣͬͱ ͜ͱͰ͢ɻ
कഁ
कഁ
.JYJO+BQBOFTF
w ߦۭ͚ͯॻ͖·͠ΐ͏ w HJUͷίϛοτϝοηʔδߦ͕ λΠτϧɺߦҎ͕߱ຊจ w ߦΛۭʹͤͣຊจΛॻ͘ͱશͯλ Πτϧѻ͍ʹͳΓɺgit --oneline tig
ίϚϯυͰҰॹͨ͘ʹͳΔ λΠτϧͷޙߦۭ͚ͯຊจΛॻ͘
λΠτϧͷޙߦۭ͚ͯຊจΛॻ͘ λΠτϧ ߦ ຊจ ߦҎ߱ ۭߦ ߦ
w ࣈ҆Ͱଟগӽ͑ͯྑ͍ w ཁʹͰ͖ͳ͍΄Ͳ͘ͳΔΑ͏Ͱ͋ ΕͦΕຊจʹॻ͘͜ͱ w ίϛοτϝοηʔδʮԿނʯΛॻ͘ ͷ͕ͩλΠτϧʮԿΛʯͰྑ͍ λΠτϧΛࣈҎʹ͓͞ΊΔ
w จষͷ࢝Ί͕େจࣈӳจ๏ͷجຊ w lӳจ๏จষઌ಄େจࣈz<ݕࡧ> w ຊޠͳΒؾʹ͠ͳ͍ ؔͳ͍ λΠτϧͷจ಄Λେจࣈʹ͢Δ
w λΠτϧྖҬΛݮΒͤΔ w ຊޠͰ۟ෆཁ w ͕۟ݱΕΔͱಡݱΕ࢝ΊͨΓཁ ͔ΒΊͷઆ໌ͱΕ͍ͯ͘ w ΧϯϚɺಡඪͰ࠷େճΛ҆ ʹ͍ͯ͠Δ
λΠτϧͷจʹϐϦΦυΛ͚ͳ͍
w /" w ຊޠͷ߹ମݴࢭΊ͔༻ݴࢭΊ͔ ΛͳΔ͘౷Ұ͍ͯ͠Δ w ݸਓతʹ༻ݴࢭΊΛ͍ͬͯΔ w நྫʓʓΛ˚˚͢Δ λΠτϧ໋ྩ๏Ͱهड़͢Δ
w ࣈ҆Ͱଟগӽ͑ͯྑ͍ w 13ͷຊจʹॻ͘༰Λه͓ͯ͘͠ͱ ྑ͍ ޙड़͢Δ(JU)VCͱͷ࿈ಈྫ ຊจߦ͋ͨΓࣈҎʹ͓͞ΊΔ
w ʮͲͷΑ͏ʹ )PX ʯ࣮ΛಡΊ Θ͔Δ w ʮԿΛ 8IBU ʯίϛοτϝοηʔ δߦʹλΠτϧͱͯ͠ه͢
w ʮͳͥ 8IZ ʯίϛοτϝοηʔ δߦͷຊจͱͯ͠ه͢ ຊจͰʮͲͷΑ͏ʹʯͰͳ͘ʮԿ ΛʯͱʮͳͥʯΛઆ໌͢Δ
8IBU ԿΛ͢Δ͔
$POUFYU Կނඞཁ͔ 8IBU ԿΛ͢Δ͔
$POUFYU Կނඞཁ͔ .FSJU ͲΜͳಘ͕ 8IBU ԿΛ͢Δ͔
$POUFYU Կނඞཁ͔ .FSJU ͲΜͳಘ͕ 8IBU ԿΛ͢Δ͔ 8IBU
$POUFYU Կނඞཁ͔ .FSJU ͲΜͳಘ͕ 8IBU ԿΛ͢Δ͔ 8IZ 8IBU
5IFTFBSF (VJEFMJOFT IUUQKBXJLJQFEJBPSHXJLJ&""&""&##&&##"NFEJB'JMF$BOUJOP1MBOJTQIFSFQOH
w5IFTFWFOSVMFTBHBJO w.Z3PDL)FSPFTJO +BQBO w(JU(JU)VCXPSLqPX "HFOEB
)FSPFT !LBNJQP !ZZBHJ !BNBUTVEB BOENPSF !ZBIPOEB !QPDLF
w ڧͦ͏ͳਓͨͪɻڧͦ͏ͳਓͨͪΛਅ ࣅΕڧ͘ͳΕͦ͏ w ڧ͍ਓୡίϛοτϝοηʔδڧ͍ w ίʔυ͚ͩͰͳ͘ίϛοτϝοηʔδ ެ։͞Εͯͯഎத͔Β,BUBΛֶͿ ͜ͱ͕Ͱ͖Δ )FSPJTTUSPOH
,BUB 28"/ JO 2VBMJUZ8JUIPVU"/BNF
w l/PEFTDSJQUJPOQSPWJEFE ಛʹॳର໘ʹରͯ͠ ࣦྱz w lͳͥͦͷ13ΛϚʔδ͢Δඞཁ͕͋ Δͷ͔Λॻ͘z w l༗ӹͳใͯ͢ه͢z w
l$PTNFUJDDIBOHFͰ͋͑ͯ͋ ·Γॻ͔ͳ͍ ࣭ྔͷରൺ z )FSPFT໊ݴू ࢲͷίϯύε
lOPEFTDSJQUJPO QSPWJEFEzΛ߇͑Δ (JU(JU)VC5JQT
#FGPSF IUUQTHJUIVCDPNNVSZPJNQMCVPZTQVMM
"GUFS IUUQTHJUIVCDPNCCBUTPWSVCPDPQQVMM
w5IFTFWFOSVMFTBHBJO w.Z3PDL)FSPFTJO +BQBO w(JU(JU)VCUJQT "HFOEB
My workflow before and after
w NBTUFSʹ͍Δ··࡞ۀ w ࡞ۀॲ͕͍ͭͨΒϒϥϯνΛΔ w HJUDPNNJU࣌ʹλΠτϧ͚ͩΛ ॻ͍ͯίϛοτ w 13ͰຊจΛॻ͘ ʙ͘Β͍લͷ࡞ۀϑϩʔ
w ࡞ۀͷཁΛϒϥϯν໊ʹͯ͠ϒϥϯ νΞτ w λΠτϧͱຊจΛίϛοτ w 13ܗͷΈ ݱࡏͷ࡞ۀϑϩʔ
w ࡞ۀͷཁΛϒϥϯν໊ʹͯ͠ϒϥϯ νΞτ w λΠτϧͱຊจΛίϛοτ w 13ܗͷΈ ݱࡏͷ࡞ۀϑϩʔ 5JQTհ
lOPEFTDSJQUJPOQSPWJEFEzΛ߇͑Δ ࡞ۀతʹ͍ͭͯϒϥϯν໊Λ͚Δ ϒϥϯνΛߜΓࠐΊΔΑ͏ʹ͢Δ .BSLEPXOΛͬͯίϛοτϝοηʔδΛॻ͘ λΠτϧͱҰॹʹຊจΛॻ͘
$MPTJOHLFZXPSETΛ׆༻͢Δ ؔ࿈͢ΔίϛοτTRVBTI͢Δ (JU(JU)VCUJQT ࡁ
࡞ۀతʹ͍ͭͯ ϒϥϯν໊Λ͚Δ (JU(JU)VC5JQT
w ࡞ۀ ్த ͷ͜ͱʹ͍֮ͭͯॻʹͳΔ w (JU)VCͰͷλΠτϧΛΠϝʔδ͢Δ w Ϛʔδ͞ΕΔࡍʹl.FSHFQVMM SFRVFTUGSPNVTFS CSBODIOBNFzͱ͍ͬͨײ͡Ͱλ
ΠτϧʹೖΔͷͰͳΔͯ͘͘͠Δ ࡞ۀతʹ͍ͭͯϒϥϯν໊Λ͚ͭΔ
λΠτϧͱϒϥϯν໊ͷ૬ҧ FH ϒϥϯν໊
λΠτϧͱϒϥϯν໊ͷ૬ҧ FH ϒϥϯν໊
λΠτϧͱϒϥϯν໊ͷ૬ҧ FH ϒϥϯν໊
λΠτϧͱϒϥϯν໊ͷ૬ҧ FH ϒϥϯν໊
None
ϒϥϯνΛߜΓࠐΊΔΑ͏ ʹ͢Δ (JU(JU)VC5JQT
ϒϥϯν໊ͰߜΓࠐΉ alias cb=‘ git checkout ` git branch | peco
| sed -e "s/\* //g" | awk "{print \$1}"`' IUUQTHJUIVCDPNLPJDEPUpMFTCMPCFECECGBCGCEPUTIHJUTI- ߜΓࠐΈ༻ ΤΠϦΞε
ϒϥϯν໊ͰߜΓࠐΉ IUUQTHJUIVCDPNLPJDEPUpMFTCMPCFECECGBCGCEPUTIHJUTI- QFDPͰߜΓࠐΈ
w LPJDΦϦδφϧ w ࡞Γ͔͚ͷϩʔΧϧͷͷɺੜࣽ͑Ͱ ެ։ʹૣ͗͢Δ w ෳͷ࡞ۀதϒϥϯνΛ࣋ͭϦϙδτ ϦͰͷϒϥϯνߜΓࠐΈͷϔϧύʔ w ෆඞཁʹόοΫϦϯΫΛ͚ͭͨ͘ͳ͍
࡞ۀதϒϥϯνͷ಄ࢠʹXJQ@Λ͚Δ
XJQ@Ͱ࢝·ΔϒϥϯνQVTIͰ͖ͳ͍ #!/bin/sh # if [ "$(git rev-parse --abbrev-ref HEAD |
grep '^wip_')" ]; then echo "\033[0;31m[ABORT] You cannot push a branch whose prefix is \`wip_\`. \033[0;39m" 1>&2 exit 1 fi exit 0 IUUQTHJUIVCDPNLPJDEPUpMFTDPNNJUGCBCEEDEFGCCEFEGB HJUIPPLT QSFQVTI
%&.0
.BSLEPXOΛͬͯ ίϛοτϝοηʔδΛॻ͘ (JU(JU)VC5JQT
IUUQLPJDIBUFOBCMPHDPNFOUSZHJUDPOpHHMPCBMDPSFDPNNFOUDIBS
w HJUͷσϑΥϧτͩͱɺίϛοτϝοηʔ δΛฤू͢ΔΤσΟλͰͷίϝϯτߦ͕ ʹͳ͍ͬͯΔ w ҰํͰ(JU)VCͷ1VMM3FRVFTUͰ จॻߏΛ࡞Δ࣌.BSLEPXOͱͳ ΔͨΊɺݟग़͠ʹ͏͕ίϝϯτߦͱ ͯ͠ίϛοτϝοηʔδ͔Βফ͍͑ͯͨ Μෆศ
.BSLEPXOͰॻ͘5JQ
ίϝϯτͷจࣈΛ͔Βมߋ͢Δ % git config --global core.commentchar '^' ?ʹมߋ͢Δ w ͪΖΜ?Ͱͳͯ͘ྑ͘ɺϓϥοτϑΥʔ
ϜͰൺֱతߦ಄ʹΘͳͦ͞͏ͳͷΛબͿ w ྫ͑3VCZͩͱ!ͳͲίϛοτϝο ηʔδͰίʔυྫΛه͠͏ΔͷͰ͑ͳ͍
ίϝϯτͷจࣈΛ͔Βมߋ͢Δ diff --git a/dot.gitconfig b/dot.gitconfig index 07e3ef8..a95eae6 100644 --- a/dot.gitconfig
+++ b/dot.gitconfig @@ -30,6 +30,7 @@ branch = auto interactive = auto [core] + commentchar = ^ editor = emacsclient -nw -a '' excludesfile = ~/.gitignore [diff] % git config --global core.commentchar '^' HJUDPOpHͷՃ
λΠτϧͱҰॹʹຊจΛॻ͘ (JU(JU)VC5JQT
w 1VMM3FRVFTUʹॻ͘͜ͱΛ͋Β͔͡Ίί ϛοτϝοηʔδʹه͢ w ʮίϛοτˠ13࣌ʹॻ͘ʯͰͳ͘ʮίϛο τ࣌ʹॻ͘ˠ13ܗ͘Β͍ʯ w Ͳ͏ͤॻ͘ͳΒϒϥβͰͳ͖͘ͳΤ σΟλͰ w
NBTUFSQVTI͢Δͱ͖ͱྲྀΕΛม͑ͳ͍ λΠτϧͱҰॹʹຊจΛॻ͘
HJUDPNNJU࣌ʹΤσΟλฤू͢Δ
13࣌ʹλΠτϧຊจ͕ຒ·ͬͯΔ
$MPTJOHLFZXPSET Λ׆༻͢Δ (JU(JU)VC5JQT
w ίϛοτϝοηʔδʹ'JYFT൪߸ ͳͲؚΉͱ*TTVFͷΫϩʔζ࿈ܞ ʹͳΔ w طʹڍ͕͍ͬͯΔ*TTVFͷϙΠϯ λʹͳΔར͕͋Δ $MPTJOH,FZXPSETΛ׆༻͢Δ
IUUQTIFMQHJUIVCDPNBSUJDMFTDMPTJOHJTTVFTVTJOHLFZXPSET ༗ޮͳΩʔϫʔυ
'JYFTͷྫ FH *TTVFΛ ࢦఆ͍ͯ͠Δ
'JYFTͷྫ FH *TTVFΛ·ͱΊͯ ࢦఆ͍ͯ͠Δ
'JYFTͷྫ FH ϦϙδτϦʹΑΓ λΠτϧهࡌ
ؔ࿈͢Δίϛοτ TRVBTI͢Δ (JU(JU)VC5JQT
ຬΛ࣋ͯ͠13ͷ४උ 1SPCMFN දग़͢Δ
ຬΛ࣋ͯ͠13ͷ४උ $POUFYU ඞཁͳഎܠ
ຬΛ࣋ͯ͠13ͷ४උ 8IZ ରҊͱͷൺֱ $POUFYU ඞཁͳഎܠ
0QFOB13
ࢲͷ3VCP$PQྗ Use ""
None
TRVBTI HJUQVTIIFBEG
w ϝϯςφɺϩʔΧϧͰͷ։ൃ ྫ5%% ʹΑΔSFEDPNNJUHSFFO DPNNJUSFGBDUPSDPNNJUͷ ίϛοτཻʹڵຯ͕ͳ͍ w 13લͷϩʔΧϧ࡞ۀΛҰ۠Γͨ͠ ཻ͍ɺ13ϚʔδޙͷϦϞʔτมߋ ཤྺΛཻ͍͍ͨͱͳΔ
TRVBTIͷࢥߟ
w ϝϯςφϯεͰݫີʹॏཁͳͷҎԼ w ίϛοτͰͭͷมߋཧ༝Ͱ͋Δ͜ͱ w ςετίʔυ͕ηοτͰ͋Δ͜ͱ w ݁13ϨϏϡʔޙʹTRVBTI͢Δ Α͏ٻΊΒΕΔ͕ɺ͜Εਖ਼͍࢟͠ Ͱ͋Δ
TRVBTIͷࢥߟ
͓Ϛʔδ
ϝϯςͷྺ࢙ʹ։ൃ్্ͷෆཁ ίϛοτʹTRVBTIͯ͠ ෆཁͳίϛοτ͕ݱΕͳ͍
ॱಓ੍উ ͍·͋ΔྗͰಊʑͱίϛϡχςΟʹࢀՃ
w SBJMTSBJMTϦϙδτϦ͔Βɺ3BJMTͷίʔ υ͚ͩͰͳ͘13ͷग़͠ํ͔Βίϛοτϝο ηʔδͷॻ͖ํֶͿ͜ͱ͕Ͱ͖Δ w ಛʹίϯτϦϏϡʔλ͔࣌Βίϛολʔ ʹͳ͍ͬͯΔ3BJMTίϛολʔͷίϛοτ ͓खຊʹ͓͢͢Ί ࠪҰ՝՝ײ͋Δ
w ίϛοτϝοηʔδΛ੍͢ΔͷϦϙδ τϦͷྺ࢙ͷ҆ఆΛ੍͢Δ ͓ΘΓʹ
IUUQTUXJUUFSDPNLPJDTUBUVT
3BJMT044ύονձ ݄࣍։࠵
࣍ճ݄ ݄ ʙFTNʹͯ :PV
None
One more thing…
None
͋ͱ͔Γ·͢Ͷʁ ࠾༻ Ҏ্ͷ3BJMTΞϓϦ։ൃͷ࣮ l3BJMT044Λ௨͍ͨ͡͠ϓϩάϥϚʔz @koic·ͰͲ͏ͧ