Git pull non aggiornare, incoerente repo?
Domanda
Ho un problema strano con git configurato utilizzando DAV su apache2.
ti forniscono ulteriori dettagli, se necessario, ma qui è una panoramica di alto livello del problema.
Ho 3 cloni di un repository:
- la nuda quello di spingere e tirare da
- uno sulla macchina A
- uno sulla macchina B
Lo faccio 1 ultima modifica sulla macchina A, e ho spinto tutti i miei cambiamenti, e ha fatto un tiro su entrambi. Il problema è che, per qualche motivo non vedo i miei ultimi cambiamenti dopo aver tirato sulla macchina B.
Non v'è alcun messaggio di essere davanti a distanza su entrambi macchina sia.
La parte strana è:
- Se faccio un "git log" sul repository nuda, le ultime modifiche dalla macchina A ci saranno
- Se faccio un altro clone del repository nuda, i cambiamenti non sarà lì. Sarà solo fino agli ultimi cambiamenti che macchina B vede.
E 'questo un problema di configurazione del server o di un problema di git? Ho avuto questo problema per molti mesi.
stampe git branch -a
:
Macchina A:
* master
remotes/origin/HEAD -> origin/master
remotes/origin/master
Macchina B:
* master
remotes/origin/HEAD -> origin/master
remotes/origin/master
.git/config
per entrambi:
[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/*
Soluzione
Dal momento che hai confermato la mia ipotesi era proprio nei commenti, aggiungerò questo come una risposta :) Sembra che il problema è quello descritto in questa FAQ git:
C'è un gancio di esempio chiamata post-update.sample in .git / ganci / che è possibile rinominare al post-aggiornamento per git update-server-info
eseguire automaticamente dopo una spinta. Questo genera le informazioni necessarie per il trasporto HTTP muto.