Gitのuser名を接続先のリポジトリによって変更する
問題
これまで怒られたこと無かったので会社のリポジトリにもncaq <ncaq@ncaq.net>
でコミットしてたら、「将来知らない人が見たら誰か分からないので会社のメールアドレスに変えてください」と言われて、それも確かにそうだなと思うので変更する。
Gitのauthorは複数名で名乗れれば良いのに。そしたら少なくとも名寄せ出来ない問題は解決する。
探査
プロジェクト一つずつlocalなgit config
していくのは絶対忘れるからやりたくない。
なのでgit-configのincludeIf
を使うことにする。
単純な解決策としてはgit clone
する先のディレクトリを分けてgitdir
を使うとかがあるんだろうけれど、本質的な所では無いところでディレクトリをむやみに分けたくない。全てDesktop以下にcloneしたい。後これも所定の位置にcloneするの忘れそう。
業務用にはCodeCommitを使うことが増えてきたので、 remoteリポジトリで分けることにする。
要件として、別に私の実名はググったら出てくる程度には秘匿する情報ではないが、見せびらかすような真似はしたくないというのがある。
解決
[user]
name = ncaq
email = ncaq@ncaq.net
[includeIf "hasconfig:remote.*.url:codecommit://**"]
path = ~/.config/git/config.codecommit
のように設定して、
config.codecommit
をgitignoreで隠すことで解決する。今後codecommitでアクセスする先が増えたらどうなるかとかは今のところ考えていない。まあワイルドカード書式に柔軟性が少しあるので文字列を拾えばなんとかなるでしょう。
バージョンが古いとうまく動かない
と思ったのだが、何故か動かない。
なぜ? 調べる。
2022年4月ごろにリリースされたGit v2.36.0から, gitconfigのincludeIf sectionで新しい条件 hasconfig:remote.*.url が利用可能になりました.
WSL2のUbuntu LTSだと、
git version 2.34.1
でした。
PPAを追加して解決。 Ubuntu で Git の最新を使う - Qiita
やっぱりWSLでもGentooかArchかNixOS使おうかなあ。最新のバージョンが使えなくて困ることが多い。