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
Git basis and gitosis
Search
Yasuhiro Asaka
April 09, 2011
Programming
100
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Git basis and gitosis
Git の基本と gitosis :-)
Yasuhiro Asaka
April 09, 2011
More Decks by Yasuhiro Asaka
See All by Yasuhiro Asaka
Can't emerge, how to do it ?
yasuhiro
2
730
ELOG and Ebuild Phase Hook
yasuhiro
0
680
Git workflow and activity
yasuhiro
2
490
Let's drink homebrew :-)
yasuhiro
1
120
Other Decks in Programming
See All in Programming
Spring Security 実践 ─ GraphQL APIで実務に役立つ 認証・認可 を学ぶ
wagyu
0
200
Datadog × OpenTelemetry 入門と実践のあいだ
kn_to_maxpno
1
150
Inside Stream API
skrb
1
660
AIエージェントの隔離技術の徹底比較
kawayu
0
470
The Arts and Crafts of Work in the AI Era — Toward Mastery in Software Development
kuranuki
1
730
Make SRE Operations Easier with Azure SRE Agent
kkamegawa
0
4.8k
セキュリティの専門家じゃなくてもできる。「セキュリティ意識」をアップデートして サプライチェーン攻撃への耐性を高めよう。
tk3fftk
5
680
LLM Plugin for Node-REDの利用方法と開発について
404background
0
160
Agentic UI
manfredsteyer
PRO
0
120
タクシーアプリ『GO』の バックエンド開発のおける AI利活用と若者のすべて
pyama86
3
1.9k
例外の正しい扱い方 そのエラー try-catchして大丈夫?
jinwatanabe
0
160
決定論的オーケストレーションの設計と実装 / Design and Implementation of Deterministic Orchestration
nrslib
3
1.2k
Featured
See All Featured
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.1k
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
320
The Limits of Empathy - UXLibs8
cassininazir
1
350
Leo the Paperboy
mayatellez
7
1.8k
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
200
Being A Developer After 40
akosma
91
590k
The SEO identity crisis: Don't let AI make you average
varn
0
480
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
0
1.6k
The Curious Case for Waylosing
cassininazir
1
380
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.9k
How to Ace a Technical Interview
jacobian
281
24k
KATA
mclloyd
PRO
35
15k
Transcript
(JUͷجຊͱ HJUPTJT *UBCBTIJ :BTVIJSP"TBLB
ࣗݾհ v"CPVUNF
:BTVIJSP"TBLBXIPBNJ ‣vϓϩάϥϚ ‣v3VCZ 0CKFDUJWF$ .BD0494FSWFS ‣vখদࡊ͡Ό͕͍͑ΜͲ͏·Ί ‣v"SEVJOP ‣v"QQMF$FSUJGJFE)FMQ%FTL4QFDJBMJTU ‣v3VCZ"TTPDJBUJPO$FSUJGJFE3VCZ1SPHSBNNFS4JMWFS ‣v!HSBVXPFMGDIFO
‣vIUUQXXXHSBVXPFMGDIFOTMBCPSDPN
ٞ v"HFOEB
vHJUPTJTΛ͏ .BD0494FSWFSͰ "DDPVOUɺ3FNPUFSFQPTJUPSZՃ<%FNP> v(JUͷಛ ಛɺجຊػೳ
ಛɺجຊػೳ v(JUͷಛ
ಛ vࢄܕ7$4ɺϩʔΧϧϦϙδτϦɾϒϥϯν vΠϯσοΫε vίϚϯυ͕ଟ͍ ศརෳࡶ vߴ [MJCѹॖɺHJUϓϩτίϧɺϚʔδ தԝूܕ ࢄܕ
ӡ༻ํ๏͍ͩ͠ ରଟ
master vϩʔΧϧϒϥϯν 4JOBUSBͰΈ͔͚ͨྫ POHJUIVC ࣮ݧతͳ ଞͷਓʹӨڹ͠ͳ͍ ϒϥϯνΛ؆୯ʹ࡞ΕΔ ฏߦͨ͠࡞ۀ͕ਐΊΒΕΔ ෳίϛοτʹ·͕ͨΔཧతͳมߋͷ୯ҐϦϦʔε
vΠϯσοΫε ίϛοτͱϫʔΫπϦʔͷதؒʹҐஔ εςʔδϯάΤϦΞͱݺΕΔ εςʔδɾΞϯεςʔδͯ͠ɺίϛοτ͢ΔͨΊͷ༰Λ࡞Δॴ ΠϯσοΫεʹؚ·ΕΔҰ෦ ϋϯΫ ͚ͩΛίϛοτͰ͖Δ $PNNJU *OEFY 8PSLJOHUSFF
HJUBEE HJUDPNNJU
Awesome Terminal - bash - ⌘ 1 $ mkdir test
&& cd test $ git init # => ॳظԽ Initialized empty Git repository in /path/to/test/.git/ $ echo test > test.txt $ git status # => ঢ়ଶͷ֬ೝ # On branch master # # Initial commit # # Untracked files: # (use "git add <file>..." to include in what will be committed) # # test.txt nothing added to commit but untracked files present (use "git add" to track) $ git add -A # => εςʔδϯά $ git status # => ঢ়ଶͷ֬ೝ # On branch master # # Initial commit # # Changes to be committed: # (use "git rm --cached <file>..." to unstage) # # new file: test.txt # $ git commit -m ‘created test.txt’ -m ‘initial commit !’ # => ίϛοτ [master (root-commit) a7d81b8] created test.txt 1 files changed, 1 insertions(+), 0 deletions(-) create mode 100644 test.txt
vࢄܕͷϫʔΫϑϩʔ ΫϩʔϯϦϞʔτ͔Βྺ࢙͝ͱऔಘ ฤू εςʔδϯάΠϯσοΫεʹՃ ίϛοτϩʔΧϧϦϙδϦه ϓογϡϦϞʔτϦϙδτϦه ϑΣονϦϞʔτͷมߋͷऔಘ ϚʔδϫʔΩϯάπϦʔɺϒϥϯνϚʔδ ϦϙδτϦ࡞ϫʔΩϯάπϦʔͷมߋΛه ϓϧϑΣονͯ͠Ϛʔδ
ϦϞʔτͷมߋऔΓࠐΈ ·ͨ
جຊػೳ (JUʹݶΒͣ vཧతͳෳϑΝΠϧʹ·͕ͨΔมߋͷه vҎલͷίϛοτʹΔ vมߋཤྺΛௐΔ vͳͥͱ୭͕ͷه Awesome Terminal - bash
- ⌘ 1 $ git config -l # => svn info ʹ૬ user.name=grauwoelfchen
[email protected]
color.ui=auto # => Χϥʔදࣔ core.autocrlf=input # => ίϛοτ࣌ʹվߦίʔυΛLFʹἧ͑Δ core.excludesfile=/Users/grauwoelfchen/.gitexclude # => ڞ௨ͷແࢹઃఆϑΝΠϧ core.repositoryformatversion=0 core.filemode=true core.bare=false core.logallrefupdates=true core.ignorecase=true remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
[email protected]
:foo.git # => ϦϞʔτϦϙδτϦ remote.moxssg.fetch=+refs/heads/*:refs/remotes/moxssg/*
[email protected]
:foo.git # => ϦϞʔτϦϙδτϦ
Awesome Terminal - bash - ⌘ 1 $ git log
-3 -p Gemfile # => ‘Gemfile’ ͱ͍͏ϑΝΠϧΛѻͬͨίϛοτͷ༰Λ3ͭ commit 9d3f4bc38f2d89d98567af017cf0327626e4effa Author: grauwoelfchen <
[email protected]
> Date: Sun Apr 3 23:39:49 2011 +0900 specified version of maruku gem. diff --git a/Gemfile b/Gemfile index 99fa1f0..df7bac2 100644 --- a/Gemfile +++ b/Gemfile @@ -7,7 +7,7 @@ gem 'bson_ext', '~> 1.2' gem 'data_mapper' gem 'mongoid_taggable' gem 'will_paginate', '~> 3.0.pre2' -gem 'maruku' +gem 'maruku', '~> 0.6.0' group :development do gem 'rspec', '2.5.0' commit 878ecc909708a46dfc1c85b23ed2c344b5343032 : vมߋཤྺΛௐΔ vͳͥͱ୭͕ͷه
Awesome Terminal - bash - ⌘ 1 # ࢦఆͨ͠ϑΝΠϧʹؔ࿈͢ΔίϛοτΛௐΔ $
git rev-list --all Gemfile | wc -l 6 # ࢦఆͨ͠ϑΝΠϧͷ֤ߦͷมߋ͕Ͳͷίϛοτ͔Β͖͔ͨΛௐΔ $ git blame Gemfile 497c0e86 (jobs 2011-03-09 11:57:22 +0900 1) source :gemcutter 497c0e86 (jobs 2011-03-09 11:57:22 +0900 2) 878ecc90 (jobs 2011-03-22 03:20:17 +0900 3) gem 'sinatra', '~> 1.2.0' 497c0e86 (jobs 2011-03-09 11:57:22 +0900 4) gem 'haml', '3.0.25' 497c0e86 (jobs 2011-03-09 11:57:22 +0900 5) gem 'mongoid', '2.0.0.rc.7' d2560ba3 (jobs 2011-03-21 11:59:52 +0900 6) gem 'bson_ext', '~> 1.2' # ಛఆͷϑΝΠϧʹ͓͚Δɺ͋ΔίϛοτͰͷมߋ༰ΛௐΔ $ git show HEAD~3 Gemfile commit 9d3f4bc38f2d89d98567af017cf0327626e4effa Author: grauwoelfchen <
[email protected]
> Date: Sun Apr 3 23:39:49 2011 +0900 specified version of maruku gem. diff --git a/Gemfile b/Gemfile index 99fa1f0..df7bac2 100644 --- a/Gemfile +++ b/Gemfile @@ -7,7 +7,7 @@ gem 'bson_ext', '~> 1.2' gem 'data_mapper' -gem 'maruku' +gem 'maruku', '~> 0.6.0'
มߋͷݕHJUCMBNF ྺ࢙ͷॻ͖͑HJUSFCBTF ϫʔΫπϦʔͷมߋऔΓফ͠HJUDIFDLPVU ΠϯσοΫεͷมߋऔΓফ͠HJUSFTFU ίϛοτͷมߋऔΓফ͠HJUSFTFUIBSE ίϛοτͷଧͪফ͠HJUSFWFSU มߋΛҰ࣌ԣʹஔ͍͓ͯ͘HJUTUBTI ϒϥϯνͷϚʔδHJUNFSHFCSBODI໊ ϩʔΧϧϒϥϯν࡞HJUDIFDLPVUCCSBODI໊ ϦϞʔτͷϒϥϯνআHJUQVTI<SFNPUF>CSBODI໊
vΑ͘͏ίϚϯυ vΑ͘͏ϑοΫ QSFDPNNJUϑοΫ ίϛοτͷ༰νΣοΫͳͲ DPNNJUNTHϑοΫ ϝοηʔδͷ౷ҰͳͲ QPTUVQEBUFϑοΫ QVTIΛड͚ͯσϓϩΠͤͨ͞Γ
vଞͷࢄ7$4ͱൺֱϦΫΤετ͍͖ͨͩ·͕ͨ͠ ίϚϯυɺπʔϧͷҧ͍ͦ͋͜Εɺ ϫʔΫϑϩʔ͋Μ·ΓҧΘͳ͍ɻͱࢥ͏ svn͔ΒͷΓସ͑ઌʹbzrΛݕ౼͢ΔͳͲʢ࠷ऴతʹhgʹͳͬͨ‥ʣ IUUQUPHFUUFSDPNMJ ࢄόʔδϣϯཧGit/Mercurial/Bazaarపఈൺֱ IUUQXXXBUNBSLJUDPKQGKBWBSFOTBJEFWUPPM EFWUPPM@IUNM
None
େͳͷπʔϧͷ༏ྼͰͳ͘ Ͳ͏͏͔ ͍͍Θ͚
.BD0494FSWFSΠϯετʔϧ vHJUPTJTΛ͏
త χʔζ vTTIͰηΩϡΞʹ௨৴͍ͨ͠ vެ։ݤͷొ͕ࡶ vγΣϧΞΫηεͤͨ͘͞ͳ͍ vϦϞʔτϦϙδτϦ࡞Λ؆୯ʹ͍ͨ͠ vϦϙδτϦ୯ҐͰΞΫηεݖΛઃఆ͍ͨ͠
త χʔζ vTTIͰηΩϡΞʹ௨৴͍ͨ͠ vެ։ݤͷొ͕ࡶ vγΣϧΞΫηεͤͨ͘͞ͳ͍ vϦϞʔτϦϙδτϦ࡞Λ؆୯ʹ͍ͨ͠ vϦϙδτϦ୯ҐͰΞΫηεݖΛઃఆ͍ͨ͠ ˠHJUPTJTBENJOHJUͰཧ
vIPNFHJU͕6TFSTHJUʹͳΔ v6TFSTHJUCBTISDͰHJU ίϚϯυ ύε௨͢ v4FSWFS"ENJOͰHJUϢʔβʹ44)ΛڐՄ 0494FSWFSͷ߹ Awesome Terminal - bash
- ⌘ 1 # gitosis Πϯετʔϧ $ python --version Python 2.5.1 $ git clone git://eagain.net/gitosis.git $ cd gitosis $ sudo python setup.py install ... # Ϣʔβ࡞ # dscl . -create /Users/git # dscl . -create /Users/git UserShell /bin/bash # dscl . -create /Users/git RealName "git" # dscl . -create /Users/git NFSHomeDirectory /Users/git # dscl . -create /Users/git UniqueID xxx # dscl . -create /Users/git PrimaryGroupID xxx # createhomedir -b -u git
Awesome Terminal - bash - ⌘ 1 # ͢͠Ͱʹཧ͍ͯ͠ΔϦϙδτϦ͕ͨͪͲ͔͜ʹ͋Ε $
ln -s /srv/repos/git /Users/git/repositories $ sudo chown -R git /Users/git/repositories # ϩʔΧϧͰ (ཧऀͷެ։伴Λసૹ͓ͯ͘͠) $ scp ~/.ssh/id_rsa.pub
[email protected]
:/tmp/git # => ϩʔΧϧϚγϯ ... # gitosis ॳظԽ $ sudo -H -u git gitosis-init < /path/to/id_rsa.pub Initialized empty Git repository in /srv/repos/git/gitosis-admin.git/ Reinitialized existing Git repository in /srv/repos/git/gitosis-admin.git/ ... # post-update ϑοΫͷΞΫηεݖमਖ਼ $ sudo chmod 755 /srv/repos/git/gitosis-admin.git/hooks/post-updat # git ίϚϯυͷ PATH Λ௨͢ $ touch ~/.bashrc $ echo PATH=/usr/local/bin:\$PATH > .bashrc # => brew install git ͍ͯͨ࣌͠ $ echo export PATH >> .bashrc # Πϯετʔϧྃ !! # ಈ࡞֬ೝɺϢʔβՃɺϦϙδτϦՃͷσϞ $ sudo demo
Awesome Terminal - bash - ⌘ 1 $ exit logout
[My LT completed] # ͋Γ͕ͱ͏͍͟͝·ͨ͠