‘receive-pack’: service non activé pour ‘./.git’

(Résolu déjà, j’écris ceci pour le prochain gars)

J’exécutais git daemon sur un ordinateur et j’ai essayé de synchroniser avec un autre.

Sur l’ordinateur A, j’ai couru:

git daemon --reuseaddr --base-path=. --export-all --verbose 

Sur l’ordinateur B, j’ai couru:

 git clone git://computerA/.git source # worked cd source git pull # worked git push # failed with "fatal: The remote end hung up unexpectedly" 

Sur l’ordinateur A, la sortie du démon est la suivante:

 [5596] Connection from 127.0.0.1:2476 [5596] Extended atsortingbutes (16 bytes) exist  [5596] Request receive-pack for '/.git' [5596] 'receive-pack': service not enabled for './.git' [5444] [5596] Disconnected (with error) 

Je vais poster la soultion que j’ai trouvée. Si vous avez une réponse plus complète, n’hésitez pas et ajoutez-la.

Il suffit de courir

 git daemon --reuseaddr --base-path=. --export-all --verbose --enable=receive-pack 

(sur l’ordinateur A, au lieu de la commande d’origine du git daemon ), et le push fonctionne.

Notez que vous devez ensuite exécuter

 git reset --hard 

sur l’ordinateur A pour le faire “voir” les modifications de l’ordinateur B.

Post Script

Le problème avec une réinitialisation matérielle est qu’elle écrase toutes les modifications locales que vous avez subies sur l’ordinateur A.

Finalement, je me suis rendu compte qu’il serait beaucoup plus logique d’avoir un référentiel séparé (un clone dénudé ) qui ne contienne aucun fichier, puis de faire passer l’ordinateur B et l’ordinateur. De cette façon, il peut fonctionner dans les deux sens et fusionner toutes les modifications de manière fluide. Vous pouvez même avoir deux clones nus, un sur chaque ordinateur, et pousser-tirer entre eux.

J’ai rencontré cette erreur, mais la solution semble différente pour ceux qui utilisent git-http-backend. (git push / pull / clone sur http au lieu de ssh ou git)

Cela doit être fait sur le serveur distant, et il est préférable de le faire lors de la création. (la dernière ligne peut être exécutée indépendamment si le référentiel existe / est déjà utilisé)

 $ mkdir eddies # MAKE folder for repo $ chown -R eddie:websrv eddies/ #ensure apache (webserver) can access it $ cd eddies/ $ git --bare init --shared Initialized empty shared Git repository in /var/git/eddies/ $ ls twigs config description HEAD hooks info objects refs $ git config --file config http.receivepack true 

J’ai un problème avec git reset –hard voici donc ma solution alternative.

Sur le repo local cloné faire une twig

 git checkout -b my_new_branch 

sur le repository d’origine à distance, activez le service de receive-pack

 git daemon --reuseaddr --base-path=. --export-all --verbose --enable=receive-pack 

pousser la nouvelle twig à l’origine distante

 git push origin my_new_branch 

fusionner la nouvelle twig à l’origine avec

 git merge my_new_branch