私はルビーで独自の git post-receive フックを書いています。これは次のようなものです。
if !File.exists?(rep_dir+repo)
puts "Cloning repository #{repo} into #{rep_dir}."
`cd #{rep_dir}; sudo git clone file:////home/git/repositories/#{repo}.git`
exit
end
このフックは gitolite 共通フックでセットアップされるため、新しいリポジトリの構成をプッシュすると、すぐに新しい場所にクローンされます。
また、gitolite config の各プロジェクトをループして、各プロジェクトのリポジトリが存在するかどうかを確認しますが、問題があるのはそこではありません。
私の問題は、このスクリプトを実行するたびに次のようになることです。
remote: cd: 1: can't cd to /home/<somedir>/repositories/
remote: Cloning repository gitolite-admin into /home/<somedir>/repositories/.
フックの実行後、リポジトリはターゲット ディレクトリに複製されませんでした。GIT_DIR 環境変数の設定解除について読みましたが、成功しませんでした。