git pull pas mise à jour, incompatible repo?
Question
J'ai un problème étrange avec git configuré à l'aide DAV apache2.
Je vais fournir plus de détails, si nécessaire, mais voici un aperçu de haut niveau du problème.
J'ai 3 clones d'un référentiel:
- celui nu pour pousser et tirer de
- un sur la machine A
- un sur la machine B
Je fais 1 la dernière modification sur la machine A, et je poussais tous mes changements, et fait une traction sur les deux. Le problème est, pour une raison quelconque, je ne vois pas mes dernières modifications après avoir tiré sur la machine B.
Il n'y a pas de message d'être à l'avance à distance sur la machine soit non plus.
La partie bizarre est:
- Si je fais un « journal git » sur le dépôt nu, les dernières modifications de la machine A seront là
- Si je fais un autre clone du dépôt nu, les changements ne seront pas là. Il ne sera à la hauteur des dernières modifications qui voit la machine B.
Est-ce un problème de configuration du serveur ou un problème git? J'ai eu ce problème depuis plusieurs mois.
imprime git branch -a
:
Machine A:
* master
remotes/origin/HEAD -> origin/master
remotes/origin/master
Machine B:
* master
remotes/origin/HEAD -> origin/master
remotes/origin/master
.git/config
pour les deux:
[core]
repositoryformatversion = 0
filemode = false
bare = false
logallrefupdates = true
[branch "master"]
remote = origin
merge = refs/heads/master
[remote "origin"]
url = http://<url>/p/home.git
fetch = +refs/heads/*:refs/remotes/origin/*
La solution
Depuis que vous avez confirmé ma supposition était juste dans les commentaires, je vais ajouter ceci comme une réponse :) Il semble que le problème est celui qui est décrit dans ce git FAQ:
Il y a un crochet d'échantillon appelé post-update.sample dans .git / hooks / que vous pouvez renommer à la post-mise à jour afin d'exécuter automatiquement git update-server-info
après une poussée. Cela génère des informations nécessaires par le transport HTTP muet.