He estado tratando desesperadamente de que push for git funcione a través del modo "smart-http" usando git-http-backend. Sin embargo, después de muchas horas de pruebas y solución de problemas, todavía me queda
error: Cannot access URL http://localhost/git/hello.git/, return code 22
fatal: git-http-push failed`
Estoy usando las últimas versiones de Ubuntu (12.04), Apache2 (2.2.22) y Git (1.7.9.5) y he seguido diferentes tutoriales encontrados en Internet, como este http://www.parallelsymmetry.com/howto/git .jsp .
Mi archivo VHost actualmente se ve así:
<VirtualHost *:80>
SetEnv GIT_PROJECT_ROOT /var/www/git
SetEnv GIT_HTTP_EXPORT_ALL
SetEnv REMOTE_USER=$REDIRECT_REMOTE_USER
DocumentRoot /var/www/git
ScriptAliasMatch \
"(?x)^/(.*?)\.git/(HEAD | \
info/refs | \
objects/info/[^/]+ | \
git-(upload|receive)-pack)$" \
/usr/lib/git-core/git-http-backend/$1/$2
<Directory /var/www/git>
Options +ExecCGI +SymLinksIfOwnerMatch -MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
</VirtualHost>
He cambiado la propiedad de la /var/www/git
carpeta a root.www-data
y para mis repositorios de prueba he habilitado la inserción anónima haciendo git config http.receivepack true
. También lo he intentado con usuarios autenticados pero con el mismo resultado.
Los repositorios fueron creados usando:
sudo git init --bare --shared [repo-name]
Al mirar apache2 access.log, me parece que WebDAV está tratando de ser utilizado, y que git-http-backend nunca se activa:
127.0.0.1 - - [20/May/2012:23:04:53 +0200] "GET /git/hello.git/info/refs?service=git-receive-pack HTTP/1.1" 200 207 "-" "git/1.7.9.5"
127.0.0.1 - - [20/May/2012:23:04:53 +0200] "GET /git/hello.git/HEAD HTTP/1.1" 200 232 "-" "git/1.7.9.5"
127.0.0.1 - - [20/May/2012:23:04:53 +0200] "PROPFIND /git/hello.git/ HTTP/1.1" 405 563 "-" "git/1.7.9.5"
¿Qué estoy haciendo mal? ¿Es un problema con la versión de git y / o apache que estoy usando quizás?
Por cierto: he leído todas las preguntas relacionadas con git http en ServerFault y StackOverflow, y ninguna de ellas me proporcionó una solución, así que no marque esto como duplicado.
fuente
Respuestas:
Creo que el hecho de que WebDAV se esté utilizando significa que su material CGI no está configurado correctamente.
Intente utilizar la directiva ScriptAlias de la forma en que la muestran en el tutorial que dijo que estaba siguiendo.
fuente
Para solucionar esto, necesitamos habilitar WebDav en el servidor apache usando 2 pasos
Ejecute este comando en el símbolo del sistema
Luego reinicie el servidor apache.
fuente