先日の追記情報だけではまだ不十分でした。
確かにclone, commit, push まで成功するのですが、それは最初にcloneしたリポジトリでの操作に限定したものでした。他のcloneした場所で編集して push しようとして失敗したり、そもそもcloneで失敗(空っぽリポジトリ)といった現象が見られました。
再度確認してみると足りなかったのは以下の2点
- hooks/post-update.sampleを post-update として配置
- サーバー側のリポジトリのアクセス権が全てapache(wwwのユーザー)になっていること
これらをまず確認してみることが必要かと思います。
意外に、git update-server-info を実行するとファイルが作成されて、それが実行したユーザーになっていたりするので、apacheユーザーが所有者ではないファイルができてしまっていたりします。
また、pushのたびに update-server-info の実行が必要なようで、それをやってくれるのが post-updateのスクリプト内となっています。
他に、リバースプロキシ背後で動かそうとするとまたパスの問題が出てきそうなので、それはまたいずれ調査と言うことで。