ãã¢ãããã°ã©ãã³ã°ããæ¡çšãããšãå
šå¡ã§åãã¿ã¹ã¯ã«åãçµã (WIP 1)ãããïŒè€é㪠Git ãã©ã³ãæŠç¥ã¯å¿
èŠãªããªãïŒäŸãã° master
ãã©ã³ããš develop
ãã©ã³ãã ãã§éçšããããšãã§ããïŒä»å玹ä»ãã mob
ã³ãã³ãã䜿ããšïŒã¢ãã»ãã·ã§ã³ã§ç¹°ãè¿ãè¡ãªãããã©ã€ããŒïŒã¿ã€ãã¹ãïŒäº€ä»£ããã·ã¥ããšå®çŸã§ããïŒç¹ã«ããªã¢ãŒãã¢ãããã°ã©ãã³ã°ãã ãš GitHub ã« git push
ãããŠãã©ã€ããŒã亀代ããïŒGit Handover ãšèšãïŒããïŒmob
ã³ãã³ãã䜿ããšäŸ¿å©ïŒ
mob.sh
ã€ã³ã¹ããŒã«
mob
ã³ãã³ã㯠brew
ã³ãã³ãã§ç°¡åã«ã€ã³ã¹ããŒã«ã§ããïŒããããé »ç¹ã«ãªãªãŒã¹ãããŠããããïŒå®æçã« brew upgrade
ãããŠãããšè¯ãããïŒä»åã®èšäºãæžããŠãéã«ã v0.0.13
â v0.0.17
ã«ããŒãžã§ã³ã¢ããããŠããïŒ
$ brew install remotemobprogramming/brew/mob
$ mob version
v0.0.13
$ brew upgrade remotemobprogramming/brew/mob
$ mob version
v0.0.17
ãªã mob
ã³ãã³ã㯠GitHub ã§ OSS ã«ãªã£ãŠããïŒGo ã§å®è£
ãããŠããïŒ
github.com
mob
: åºæ¬ã³ãã³ã
åºæ¬çã«ä»¥äžã®ãåºæ¬ã³ãã³ã 3åãã䜿ãã° OKïŒç°¡åã«ã¯ãŒã¯ãããŒãå³è§£ããïŒGitHub ã¯äŸãšããŠïŒïŒ
mob start
... ãã¢ãã»ãã·ã§ã³ããéå§ãã
mob next
... 次ã®ãã©ã€ããŒã« Git Handover ããã
mob done
... ãã¢ãã»ãã·ã§ã³ããçµäºãã

1. mob start
ãã¢ãã»ãã·ã§ã³ããéå§ãããšãã« mob start
ãå®è¡ããïŒGit ãªããžããªã« remote
èšå®ãããŠããå¿
èŠãããããïŒãªããžããªã clone
ããŠããïŒmob start
ãå®è¡ãããšïŒèªåçã« mob-session
ãã©ã³ããäœãã㊠git push
ãŸã§å®è¡ãããïŒ
(master) $ mob start
â git fetch --prune
â git pull --ff-only
> create mob-session from master
â git checkout master
â git merge origin/master --ff-only
â git branch mob-session
â git checkout mob-session
â git push --no-verify --set-upstream origin mob-session
> you are mob programming
(mob-session) $
2. mob next
éçºãé²ããŠïŒãã©ã€ããŒã亀代ãããšãã« mob next
ãå®è¡ããïŒãããšïŒèªåçã« git add
ãš git commit
ãš git push
ãå®è¡ãããïŒã³ãããã¡ãã»ãŒãžã¯ããã©ã«ãã ãš mob next [ci-skip]
ãšãªãïŒæåŸã« master
ãã©ã³ãã«åãæ¿ããïŒ
(mob-session) $ mob next
â git add --all
â git commit --message "mob next [ci-skip]" --no-verify
â git push --no-verify origin mob-session
â git checkout master
(master) $
3. mob start
ãã©ã€ããŒã亀代ãããïŒãã1床 mob start
ãå®è¡ããïŒãããšïŒèªåçã« mob-session
ãã©ã³ãã«åãæ¿ããïŒéçºãé²ããããïŒã¢ãã»ãã·ã§ã³ã§ã¯ïŒåºæ¬çã« mob start
ãš mob next
ãç¹°ãè¿ãïŒ
(master) $ mob start 10
â git fetch --prune
â git pull --ff-only
> rejoining mob session
â git branch -D mob-session
â git checkout mob-session
â git branch --set-upstream-to=origin/mob-session mob-session
â 10 minutes timer started (finishes at approx. 11:00)
> you are mob programming
xxxxxxx 5 minutes ago <kakakakakku>
(mob-session) $
ãªã mob start 10
ã®ããã«åŒæ° minutes
ãæå®ãããšïŒèªåçã«ã¿ã€ããŒãèµ·åããïŒæå®ããæéãçµéãããšïŒMac ã®å Žå㯠AppleScript (osascript
) ã䜿ã£ãŠéç¥ãããããã«ãªã£ãŠããïŒããã« say
ã³ãã³ãã䜿ã£ãŠ mob next
ãšèªã¿äžããŠãããïŒäŸãã° Mobster ãªã©ïŒã¢ãããã°ã©ãã³ã°ã«ç¹åããã¿ã€ããŒã¢ããªã䜿ãããšãã§ãããã©ïŒmob
ã³ãã³ãã«å梱ãããŠããã®ã¯äŸ¿å©ã ãšæãïŒ

4. mob done
ãã¢ãã»ãã·ã§ã³ããçµäºãããšãã« mob done
ãå®è¡ããïŒæåãšããŠã¯ mob-session
ãã©ã³ãã git push
ãããŠïŒããã« master
ãã©ã³ãã« git merge
ãŸã§ããŠãããïŒæåŸã« ð git commit -m 'describe the changes'
ãšè¡šç€ºãããŠããéãïŒæçµç㪠git commit
ã¯ãã©ã€ããŒãè¡ãªãïŒå人çã«äœ¿ããªã mob done
ã¯äœ¿ããã«ãã«ãªã¯ãšã¹ããäœãéçšã«ããããªããŒïŒ
(mob-session) $ mob done
â git fetch origin --prune
â git add --all
â git commit --message "mob next [ci-skip]" --no-verify
â git push --no-verify origin mob-session
â git checkout master
â git merge origin/master --ff-only
â git merge --squash --ff mob-session
â git branch -D mob-session
â git push --no-verify origin --delete mob-session
ð git commit -m 'describe the changes'
(master) $ git commit -m'Well done ð'
(master) $ git push
Tips 1 : ç°å¢å€æ°ã䜿ã
mob config
ãå®è¡ãããšïŒmob
ã³ãã³ãã®æåãæ±ºããŠããç°å¢å€æ°ã®å€ã確èªã§ããïŒ
$ mob config
MOB_BASE_BRANCH=master
MOB_WIP_BRANCH=mob-session
MOB_REMOTE_NAME=origin
MOB_WIP_COMMIT_MESSAGE=mob next [ci-skip]
MOB_VOICE_COMMAND=say
MOB_NEXT_STAY=false
MOB_START_INCLUDE_UNCOMMITTED_CHANGES=false
MOB_DEBUG=false
export
ã§äžæžãã§ããããïŒäŸãã° MOB_WIP_BRANCH
ãèšå®ããã° mob-session
以å€ã®ãã©ã³ãåã䜿ããïŒMOB_WIP_COMMIT_MESSAGE
ãèšå®ããã° mob next [ci-skip]
以å€ã®ã³ãããã¡ãã»ãŒãžã䜿ããïŒ direnv ãªã©ã䜿ã£ãŠå
šå¡åãç°å¢å€æ°ã export
ã§ããããã«ããŠãããšè¯ãããïŒ
$ export MOB_WIP_BRANCH=wip
$ export MOB_WIP_COMMIT_MESSAGE=mob next
(master) $ mob start
overriding MOB_WIP_BRANCH=wip
overriding MOB_WIP_COMMIT_MESSAGE=mob
â git fetch --prune
â git pull --ff-only
> create wip from master
â git checkout master
â git merge origin/master --ff-only
â git branch wip
â git checkout wip
â git push --no-verify --set-upstream origin wip
> you are mob programming
(wip) $
Tips 2 : Zoom ã§ç»é¢å
±æããã
mob share
ããã㯠mob start 10 share
ã®ããã« share
ãä»ãããšïŒZoom ã§ç»é¢å
±æãèšå®ãããã€ã¢ãã°ã衚瀺ã§ããïŒ
$ mob share
$ mob start 10 share

ãªã share
ã䜿ãå Žå㯠Zoom ã§ãç»é¢å
±æãéå§/忢 (Shift + Command + S)ãã®ãã°ããŒãã«ã·ã§ãŒãã«ããããæå¹åããŠããïŒ

ãšã¯èšãïŒä»å䜿ã£ã mob
ã³ãã³ã v0.0.17
㯠share
ã«å¯Ÿå¿ããŠãããã©ïŒæ¬¡ã«ãªãªãŒã¹ããã v0.0.18
ã§ã¯ mob share
ã¯åé€ãããŠããŸãïŒãã㊠mob start 10 share
ã DEPRECATED ã«ãªãïŒå°æ¥çã«åé€ãããŠããŸãïŒå®éã«äœ¿ãå Žé¢ã¯ãªãããïŒè©³ãã㯠GitHub ã® Releases ãèŠãŠããããã°ãšïŒ
ãŸãšã
mob
ã³ãã³ãã䜿ããš Git Handover ãã·ã¥ããšå®çŸã§ããïŒç¹ã«ããªã¢ãŒãã¢ãããã°ã©ãã³ã°ãããããšãã«äŸ¿å©ïŒ
é¢é£èšäº
æ
£ããéçºç°å¢ã䜿ãããšãåªå
ãïŒå人çã« Git Handover ã¯ãªã¢ãŒãã¢ãããã°ã©ãã³ã°ãããªããŠã䜿ã£ãŠããïŒè©³ããã¯2幎åã«å
¬éããè³æã«èŒããŠããïŒåãããŠèªãã§ãããããšè¯ãããïŒ
kakakakakku.hatenablog.com
