概要
社内の共有サーバにsshログインして、gitの共有レポジトリの修正をささっとしたい場面がちょくちょくありまして、
その都度以下のような手順でコミットしておりました。
# まずはnameとemailを設定する
git config --local user.name "hogefugapiyo"
git config --local user.email "hoge@hoge.fuga.piyo"
# コミットする
git commit -m "message"
# 設定を外す
git config --unset user.name
git config --unset user.email
しかしこれが面倒になってきたので
direnvをつかってsshのログインユーザ名からcommitユーザ名とメールアドレスを動的に設定する方法を考えました。
direnvの設定方法
ここを参考に設定しました。
http://qiita.com/tkmiya34/items/875742eb56ebe54d8828
.envrcの作成
git configでcommitユーザを指定せずとも、以下4つの環境変数からもcommitユーザが指定できるようでした。
https://git-scm.com/book/es/v2/Git-Internals-Environment-Variables#Committing
GIT_COMMITTER_NAME
GIT_COMMITTER_EMAIL
GIT_AUTHOR_NAME
GIT_AUTHOR_EMAIL
who am i
コマンドを使うことでログインユーザ名を取得できるので、
取得したユーザ名を加工して上記変数を.envrcで設定してあげることでコミットユーザを動的に変更できます。
※whoami
コマンドの場合はsuとかしてしまうとユーザ名が変わってしまうのでwho am i
を使うと良いと思います。
最後に
direnv使わずとも.bash_profileや.bashrc等のログインシェルで設定できる環境の方もいると思います。
また、他に良い方法があれば教えてください。