laymanがgit commitのauthorを勝手に上書きしていたので報告と対策

何が起きたか

私はncaq/ncaq-overlay: ncaq personal gentoo overlayというオーバーレイを作っているのですが,これのコミット作者が自分の表記になっていないことに気がつきました.

どうやらlaymanでaddした場合リポジトリの設定でコミット作者とコミットメールアドレスが書き換えられるようです.

それに気が付かずlaymanの名前とメールアドレスでコミットしていたわけですね.

なんで?

どうやら433687 – app-portage/layman-2.0.0_rc3: please consider setting dummy username for gitの要請を受けて,Add setting the default user name and email when adding new git based… · gentoo/layman@faf6c74のコミットでデフォルトユーザを設定するようにしたようです.

このバグチケットにはgit pullするのに対してメールアドレスを聞いてくると書いていますが,私の記憶ではgit cloneとgit pullするのにメールアドレスは必要なかったはずです.

謎.issue作りました.Why do layman overwrite git user name and email? · Issue #47 · gentoo/layman

pre commit hookでの対策は不完全

git configで上書きを無効化するような設定があれば良かったのですが,ざっと調べた所見つかりませんでした.

global hookでnameが上書きされていたらエラーを出すようにしましょう.

これでglobalと値が異なっていたらエラーでコミットできないようになる.と思ったのですが何故かmagitがhookを実行しません.

magit経由でpre.commitを実行しようとしたけどなんかだめだったので、magit-log-edit-mode-hookを利用しようとした話 - by shigemk2によると数年前からこうらしいですね.

と思ったらoverlayの位置がroot必要でroot経由で開いていたのでconfigが反映されてないだけでした.

magitのバグではなかった…

しかしという事はroot権限必要とするものに対してはgit global hookでの対策は不完全ということになります.どう対策しましょう…

このエントリーをはてなブックマークに追加 fb-like g-plusone pocket