WebDav 越しに git の bare リポジトリを公開する際の注意点

WebDav 越しに git のリモートリポジトリに push すると、push 時にリモートリポジトリ側で通常呼ばれるはずの、いくつかのフックが呼び出されません。

公式のマニュアルにあるように、これらのフックは git-receive-pack コマンドが呼び出すものです。

WebDav 越しに公開されているリポジトリに対する push の際、どのようなコマンドが内部で呼ばれているか、見てみましょう。

m(master):~/proj/sandbox % env GIT_TRACE=1 git push origin master
trace: built-in: git 'push' 'origin' 'master'
trace: run_command: 'git-remote-https' 'origin' 'https://xxx/sandbox.git'
Password:
trace: run_command: 'http-push' '--helper-status' 'https://xxx/sandbox.git/' 'refs/heads/master:refs/heads/master'
trace: exec: 'git' 'http-push' '--helper-status' 'https://xxx/sandbox.git/' 'refs/heads/master:refs/heads/master'
trace: exec: 'git-http-push' '--helper-status' 'https://xxx/sandbox.git/' 'refs/heads/master:refs/heads/master'
trace: run_command: 'git-http-push' '--helper-status' 'https://xxx/sandbox.git/' 'refs/heads/master:refs/heads/master'

git-receive-pack は呼び出されず、かわりに git-http-push というコマンドが呼び出されています。
そういうことなので、諦めましょう。
設定方法も中々面倒なので、どうしても、という場合には他のプロトコルを検討したほうがいいと思います。