Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

モブプロ用にCommit &Pushを1発で出来るスクリプトを作ってみた。

More than 1 year has passed since last update.

前置き

こんにちは、ハッピー佐藤です!

みなさんはモブプロやってますか?
最近開発チームでモブプロを始めましたが、色々と問題が起きました。

  • 普段使ってる配列と違うキーボードで混乱
  • リモートワーク中に遠隔操作すると、ラグがあってまともにコードを触れない
  • IDEやVimといった開発環境の違い

モブプロ自体は全員が肯定的でしたが、開発のパフォーマンスに少し影響がありました。
やはりエンジニアは自分の好きな環境で開発したいですよね!

そこでGitHubを通してスムーズにドライバー(タイピングする人)を交代すべく、Commit &Pushを一発で行うべくスクリプトを作ってみました!
(シェルスクリプト初心者なので、実装が汚いのはお許しください!)

必要な機能

・1コマンドでプッシュ出来る
・共同編集者を記録する
複数の人が1つのコミットに関わる為、こちらを参考にメッセージに記録出来るようにしています。

自分が会社で使う事を前提としておりますので、全員のメールドメインが同じという仕様ですがお許しください。

完成したもの

mob.sh
#!/bin/bash

#check current branch
NB=`git rev-parse --abbrev-ref HEAD`

if [[ 'master' = ${NB} ]]; then
    echo 'Not allowed master commit'
    exit 1
fi

#get date
date=`date`

#create commit message
CM="git commit -m 'mob commit
${date}
"
ORG_IFS=$IFS
MOD_IFS=","
IFS=${MOD_IFS}

for i in $1
do
IFS=${ORG_IFS}
CM+="
Co-authored-by: ${i} <${i}@happysato.com>"
IFS=${MOD_IFS}
done
IFS=${ORG_IFS}

CM+="'"

#git commit
eval "${CM}"

#git push
`git push origin HEAD`

いい感じに改行出来る方法をご存知方は教えてください!

使い方

ドライバー終了時に、以下のようにコマンドを打ち込んで下さい。
. mob.sh happy,sato
そうするとコミットメッセージは次のようになります

mob commit
Fri Apr 26 20:53:24 JST 2019

Co-authored-by: happy <happy@happysato.com>
Co-authored-by: sato <sato@happysato.com>

GitHubではこのように表示され、共同で編集したメンバーが分かります。

スクリーンショット 2019-05-07 0.17.07.png

あとは次のドライバーがpullして、自分の環境で開発を始めてください。

コミットメッセージが荒れて嫌だという方は、プルリクをGitHubでまとめてmergeするSquash and merge等の機能がありますので、ご自身の環境に合わせてお使いください。(参考

シェルスクリプトに実行権限を与えるなどは、他の記事をご参考下さい!

終わりに

こんな方法でモブプロやリモートワークを便利にしてるよ!という事例がありましたら是非教えてください!

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away