J'essaie de rendre un référentiel git disponible pour un accès en lecture seule via http.
Je le fais à l'ancienne, car git-http-backend
n'est pas disponible sur mon système hôte. Autrement dit, je mets simplement le référentiel nu dans un emplacement accessible par http.
J'ai créé le référentiel nu avec succès sur l'hôte à l'aide de git clone --bare <some-remote-location>
.
Maintenant, quand je pointe git sur le nouveau clone en utilisant git clone http://my.Host.name/location
, un message signale repository not found
.
Lorsque je capture le trafic réseau, je constate que git tente d'accéder à http://my.Host.name/location/info/refs
. Cela devrait échouer car il n'y a pas de chemin d'accès info/refs
dans le référentiel. Il existe plutôt des répertoires info
et refs
directement sous la racine du référentiel.
Il est évident que le référentiel nu cloné n’est pas structuré comme prévu par le client. Est-ce que quelqu'un sait pourquoi cela pourrait être?
Vous devrez exécuter git update-server-info
sur le serveur pour générer les fichiers nécessaires au fonctionnement du «protocole stupide».
Essayez les étapes mentionnées ici sur git-scm pour le protocole http/s .
En gros, après avoir effectué le git clone --bare <path-to-repository>
, vous devez exécuter mv hooks/post-update.sample hooks/post-update
avec votre référentiel nu, puis effectuer un git update-server-info
une fois et pouvoir ensuite cloner le référentiel.
J'ai eu ce problème lorsque la télécommande est en cours d'exécution sur un référentiel git 1.7.X et que le client git est 1.8.X; Je l'ai prouvé en rétrogradant mon client à 1.7.X - le problème a été résolu. Donc, assurez-vous que git est la même version des côtés "client" et "serveur". La commande que je courais était git clone.
Pensez également à vérifier que les modules requis sont activés sur Apache. Voici les modules requis pour git sur HTTP:
J'ai eu la même erreur en essayant de cloner un projet gitlab parce que je me suis trompé de chemin!
J'ai pris le chemin SSH
au lieu du chemin HTTP
. (+ n'oubliez pas le .git
)
git clone *HTTP_path.git*