J'ai désespérément essayé d'obtenir push pour git en passant par le mode "smart-http" en utilisant git-http-backend. Cependant, après de nombreuses heures de test et de dépannage, il me reste encore
error: Cannot access URL http://localhost/git/hello.git/, return code 22
fatal: git-http-push failed`
J'utilise les dernières versions d'Ubuntu (12.04), Apache2 (2.2.22) et Git (1.7.9.5) et j'ai suivi différents didacticiels trouvés sur Internet, comme celui-ci http://www.parallelsymmetry.com/howto/git .jsp .
Mon fichier VHost ressemble actuellement à ceci:
<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>
J'ai changé la propriété du /var/www/git
dossier pour root.www-data
et pour mes référentiels de test, j'ai activé la poussée anonyme en faisant git config http.receivepack true
. J'ai également essayé avec des utilisateurs authentifiés mais avec le même résultat.
Les référentiels ont été créés en utilisant:
sudo git init --bare --shared [repo-name]
En regardant le fichier access.log d'apache2, il me semble que WebDAV essaie d'être utilisé et que git-http-backend n'est jamais déclenché:
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'est-ce que je fais mal? Est-ce un problème avec la version de git et / ou apache que j'utilise peut-être?
BTW: J'ai lu toutes les questions liées à git http sur ServerFault et StackOverflow, et aucune ne m'a fourni de solution, alors ne marquez pas cela comme double.
la source
Réponses:
Je pense que le fait que WebDAV soit utilisé signifie que votre contenu CGI n'est pas configuré correctement.
Essayez d'utiliser la directive ScriptAlias comme elle l'affiche dans le didacticiel que vous avez dit que vous suiviez.
la source
Pour résoudre ce problème, nous devons activer WebDav sur le serveur Apache en 2 étapes
Exécutez cette commande à l'invite de commande
Redémarrez ensuite le serveur apache.
la source