MANA-DOT

PIXEL ART, PROGRAMING, ETC.

direnvを使って複数のgitコミッタ名を切り替える

direnvを使って複数のgitコミッタ名を切り替える

例えば会社のPCでこっそり個人的なリポジトリで作業してgithubにpushする場合、 うっかり会社用のgitコミッタ名(本名@会社名.co.jp みたいなアドレスとか)で commit/pushしてしまい、紐付けるつもりのなかったネットの人格と本名/会社名が紐付いてしまう というのは皆が恐れるところであると思います。

そこで、direnv を利用するといい感じに切り替えられることができたので、共有いたします。

direnv

zimbatm/direnv

あるディレクトリに .envrc というファイルを置いておくと、そのディレクトリ以下に cd した時に .envrc の内容の環境変数が読み込まれるという代物です。

例えば、

- home
  ├ .envrc  // export SOME_ENV=hogehoge
  ├ c
  └ a
    ├ .envrc  // export SOME_ENV=fugafuga
    └ b

という構造の場合、 home直下やhome/cでは SOME_ENV=hogehogeとなり、 home/aやhome/a/bの下ではSOME_ENV=fugafugaとなります。

GIT 環境変数

環境変数 GIT_COMMITTER_NAMEGIT_COMMITTER_EMAILGIT_AUTHOR_NAMEGIT_AUTHOR_EMAIL を設定することで、.gitconfigで設定したコミッタ名を環境変数で上書きすることができます。

Git - Environment Variables

which uses these environment variables as its primary source of information, falling back to configuration values only if these aren’t present.

運用

個人用の作業をするディレクトリを作り、以下の様な内容の .envrc を配置し、個人用のリポジトリはそこ以下にのみcloneするようにします。

export GIT_COMMITTER_NAME="manaten_kojin"
export GIT_COMMITTER_EMAIL="kojin@manaten.net"
export GIT_AUTHOR_NAME="manaten_kojin"
export GIT_AUTHOR_EMAIL="kojin@manaten.net"

こうすることで、個人用のレポジトリでは個人用のコミッタ名でcommitすることができます。

こんな感じに動きます。

direnvを使って複数のgitコミッタ名を切り替える

いい感じです。

direnvは他にも応用効きそうですね。

参考リンク