~/.gitconfig を切り替えるCLIツールを作りました
解決したかったこと
gitconfigの切り替えが面倒だった
昼休みや空き時間にちょっとしたツールを作るようなことがあり、今までは毎回 ~/.gitconfig
を書き換えたり、対象のリポジトリだけ .git/config
を書き換えたりする運用をしていました。
が、いくつか問題がありました。
- うっかり忘れて、コミットユーザー誤爆する
- 書き換えが面倒くさい
~/.gitconrfig
の方はバージョン管理しているので、そもそもあまり書き換えたくない
こういった問題があったので、 ~/.gitconfig
をシンボリックリンクにして、リンク先を切り替えるツールを作成しました。
設計
ざっくりこのようなつくりにしました。
~/.gitenv/
以下に環境の名前ごとのサブディレクトリを作成し、その中に.gitconfig
を作成~/.gitconfig
へシンボリックリンクを張る- リンク先をコマンドラインで切り替える
使い方の例
※既存の ~/.gitconfig
は退避しておいてください
# ~/.gitconfig を Alice 用の設定にする $ gitenv -c alice # Alice のユーザー設定をする $ git config --global user.name "Alice" $ git config --global user.email alice@example.com $ cat ~/.gitconfig [user] name = Alice email = alice@example.com # ~/.gitconfig を Bob 用の設定に切り替える $ gitenv -c bob # Bob のユーザー設定をする $ git config --global user.name "Bob" $ git config --global user.email bob@example.com $ cat ~/.gitconfig [user] name = Bob email = bob@example.com $ ~/.gitconfig を Alice 用の設定に戻す $ gitenv -c alice $ cat ~/.gitconfig [user] name = Alice email = alice@example.com # 現在の環境の名前を表示する $ gitenv alice (Alice)
実運用
実際に使っている ~/.gitconfig の内容
こんな感じで Include だけを書いてます。
[Include] path = ~/.gitconfig.all path = ~/.gitaliases path = ~/.gitconfig.kunst1080 # この行を環境ごとに変えて〼
プロンプト
普段は zsh を使っているのですが、環境変数 PROMPT
に $(gitenv)
を埋め込むようにしました。
これで今の設定がどれになっているのかわかります。
プロンプト:
hoge@MacBook-Pro.local ~ env2 (kunst1080) $
まとめ
これで誤爆を防げるよ。やったね!