解決したかったこと
gitconfigの切り替えが面倒だった
昼休みや空き時間にちょっとしたツールを作るようなことがあり、今までは毎回 ~/.gitconfig
を書き換えたり、対象のリポジトリだけ .git/config
を書き換えたりする運用をしていました。
が、いくつか問題がありました。
- うっかり忘れて、コミットユーザー誤爆する
- 書き換えが面倒くさい
~/.gitconrfig
の方はバージョン管理しているので、そもそもあまり書き換えたくない
こういった問題があったので、 ~/.gitconfig
をシンボリックリンクにして、リンク先を切り替えるツールを作成しました。
設計
ざっくりこのようなつくりにしました。
~/.gitenv/
以下に環境の名前ごとのサブディレクトリを作成し、その中に .gitconfig
を作成
~/.gitconfig
へシンボリックリンクを張る
- リンク先をコマンドラインで切り替える
使い方の例
※既存の ~/.gitconfig
は退避しておいてください
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
# ~/.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 だけを書いてます。
1
2
3
4
5
|
[Include]
path = ~/.gitconfig.all
path = ~/.gitaliases
path = ~/.gitconfig.kunst1080 # この行を環境ごとに変えて〼
|
プロンプト
普段は zsh を使っているのですが、環境変数 PROMPT
に $(gitenv)
を埋め込むようにしました。
これで今の設定がどれになっているのかわかります。
プロンプト:
1
2
|
hoge@MacBook-Pro.local ~ env2 (kunst1080)
$
|
まとめ
これで誤爆を防げるよ。やったね!