1. HappySato

    Posted

    HappySato
Changes in title
+モブプロ用にCommit &Pushを1発で出来るスクリプトを作ってみた。
Changes in tags
Changes in body
Source | HTML | Preview
@@ -0,0 +1,92 @@
+# 前置き
+こんにちは、ハッピー佐藤です!
+
+みなさんはモブプロやってますか?
+最近開発チームでモブプロを始めましたが、色々と問題が起きました。
+
+- 普段使ってる配列と違うキーボードで混乱
+- リモートワーク中に遠隔操作すると、ラグがあってまともにコードを触れない
+- 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'
+ return
+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ではこのように表示され、共同で編集したメンバーが分かります。
+
+<img width="517" alt="スクリーンショット 2019-05-07 0.17.07.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/253532/db2b9cf8-8dd4-6b75-fe7f-0e9c12e1c065.png">
+
+あとは次のドライバーがpullして、自分の環境で開発を始めてください。
+
+コミットメッセージが荒れて嫌だという方は、プルリクをGitHubでまとめてmergeするSquash and merge等の機能がありますので、ご自身の環境に合わせてお使いください。([参考](https://qiita.com/ko-he-8/items/94e872f2154829c868df))
+
+シェルスクリプトに実行権限を与えるなどは、他の記事をご参考下さい!
+
+# 終わりに
+こんな方法でモブプロやリモートワークを便利にしてるよ!という事例がありましたら是非教えてください!