by shigemk2

当面は技術的なことしか書かない

magit経由でpre.commitを実行しようとしたけどなんかだめだったので、magit-log-edit-mode-hookを利用しようとした話

pre.commitっていうのがあるんだけど、
.git/hooks/pre.commitに適当にスクリプトを書いてごにょごにょすると、
コミットする前にpre.commitの内容を実行してくれるってやつ。

ターミナルからコミットするとpre.commitが実行されるんだけど、
magitでコミットしてもpre.commitの内容は実行されない。

こりゃどうしたもんか。ぐぐってもまともな答えは得られない。というか、
「無理」という結論にいきついた。

git - Magit : how to see pre-commit hooks before editing commit log? - Stack Overflow

For evaluating pre-commit hook, there is nothing for now in magit.

なので、すたっくおーばーふろーのやつを参考にして、hookを書いてみた。

これをかきたすことで、magit-log-editが開いたときに実行される。
なお、y-or-n-pってやったのは、コミット時にテストが実行されるコマンドを
実行したかったからで、これをyes or noで確認したかったから。

(add-hook 'magit-log-edit-mode-hook
          '(lambda ()
             (interactive "p")
              (if (y-or-n-p "あなたはemacsが好きですか?")
                  (shell-command "ls -alF")
                (shell-command "ls")
                )))

だから適当にカスタマイズしてください。
というか、改善の余地がありすぎて困ります。

eggでもたぶん同じなのではないだろうか。
もうgitをemacsで使うのはやめろっていうおたっしなのだろうか。