Algum tempo atrás eu coloquei um repositório Git disponibilizado através do Apache2 + WebDAV utilizando a seguinte configuração do apache:
<Location /repositorio.git>
Dav on
AuthType Basic
AuthName "Repositorio Git"
AuthUserFile /etc/apache2/repositorio.passwd
Require valid-user
</Location>
Após algum tempo comecei a receber erros ao tentar fazer o push de muitas alterações. Se eu tentasse realizar vários push’s com erro, uma hora o push funcionava.
Fui procurar outras formas de disponibilizar o repositório Git no Apache2 e encontrei a forma descrita abaixo:
SetEnv GIT_PROJECT_ROOT /var/www/git
SetEnv GIT_HTTP_EXPORT_ALL
AliasMatch ^/git/(.*/objects/[0-9a-f]{2}/[0-9a-f]{38})$ /var/www/git/$1
AliasMatch ^/git/(.*/objects/pack/pack-[0-9a-f]{40}.(pack|idx))$ /var/www/git/$1
ScriptAlias /git/ /usr/lib/git-core/git-http-backend/
Esta configuração até agora não deu problema.
Mais detalhes dessa configuração podem ser encontrados no help do comando git-http-backend:
http://manpages.ubuntu.com/manpages/lucid/man1/git-http-backend.1.html