• 作成:

Gitのuser名を接続先のリポジトリによって変更する

問題

これまで怒られたこと無かったので会社のリポジトリにもncaq <ncaq@ncaq.net>でコミットしてたら、「将来知らない人が見たら誰か分からないので会社のメールアドレスに変えてください」と言われて、それも確かにそうだなと思うので変更する。

Gitのauthorは複数名で名乗れれば良いのに。そしたら少なくとも名寄せ出来ない問題は解決する。

探査

プロジェクト一つずつlocalなgit configしていくのは絶対忘れるからやりたくない。

なのでgit-configincludeIfを使うことにする。

単純な解決策としては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 が利用可能になりました.

gitconfigをremote repositoryごとに使い分ける

WSL2のUbuntu LTSだと、 git version 2.34.1でした。

PPAを追加して解決。 Ubuntu で Git の最新を使う - Qiita

やっぱりWSLでもGentooかArchかNixOS使おうかなあ。最新のバージョンが使えなくて困ることが多い。