2011-02-08 23 views
10

ho usato questa guida per utilizzare git per autopublish mie modifiche sul mio sito quando spingo al mio repository origine git remote:Utilizzando git di pubblicare su un sito web

http://www.lwp.ca/james/2010/03/using-git-to-manage-online-website-projects/

Ecco il mio/ganci/post- file di aggiornamento:

cd ../../public_html/dir/wbg 
env -i git pull 

Ecco la mia struttura di directory:

/home/git/wbg.git < - mio repository git remote

/home/public_html/dir/WBG < - la mia cartella Web

Quando eseguo

git push origin master 

Gli aggiornamenti del repository, ma la mia cartella Web è ancora vuota. Qualche idea?

Modifica: se il traffico futuro vede questo, il mio vero problema era che ENTRAMBE l'origine remota E la directory del sito Web di destinazione deve essere repository git. Non puoi semplicemente configurarlo per copiare il tuo progetto in una nuova cartella, a meno che quella cartella sia anche un repository git.

+0

hai fatto anche il 'chmod + x' come suggerito nell'articolo? – eckes

+0

il link fornito in questa domanda è morto –

risposta

6

Non molto da cui partire, ma posso segnalare che utilizzo correttamente un simile metodo per questo.

Per i miei scopi, chiamo il mio repository server nudo "Hub" e il mio repository webfront "Prime". Assicurati di aver inizializzato correttamente un repository git nella directory htdocs del server (Prime) e hai spinto le modifiche nel repository (Hub) o le hai inserite.

Questo è il gancio post-update che uso, che è nella directory degli hook del mio repository Hub:

#!/bin/sh 

echo 
echo "*** Pulling changes into Prime" 
echo 

cd /path/to/htdocs/ || exit 
unset GIT_DIR 
git pull hub master 

exec git-update-server-info 

Assicurarsi che questo sia eseguibile! In caso di dubbio, modifica il file post-update.sample e rimuovi l'estensione .sample al termine. Il testo echo dà un buon riscontro sul fatto che la copia è effettivamente in atto. Se non vedi quel testo, allora non sta tirando le modifiche. E se non hai intenzione di chiamare il tuo "hub" repository remoto, sostituirlo con "origine" o qualsiasi altra cosa decidi di utilizzare.

Come precauzione in modo che i miei primi e locali repository non ottengono troppo fuori di colpo, ho questo come il mio primo post-commit gancio:

#!/bin/sh 

echo 
echo "*** Pushing changes to Hub" 
echo 

git push hub 

allora posso solo tirare le modifiche dal Hub nel mio repository locale.

+0

ho provato e ho ottenuto questo errore: remoto: remota: *** Estrarre i cambiamenti in Prime remoto: remota: fatale: Non è un repository git (o una qualsiasi delle directory principali): .git remote: fatal: non un repository git (o nessuna delle directory madri): .git – Citizen

+0

Ok, l'ho risolto. Sembra che la directory del tuo sito web debba essere anche un repository git. Remoto: fatale: "origine" non sembra essere un repository git remoto: fatale: il terminale remoto riattaccato in modo imprevisto – Citizen

+0

Non disinserito GIT_DIR andando a causare la mia origine non essere in grado di aggiornare? – Citizen

1

Si potrebbe iniziare ottenendo post-aggiornamento per echo un po 'di output di debug. Sia l'output standard che l'output di errore standard vengono inoltrati a git send-pack dall'altra parte, quindi puoi semplicemente echo messaggi e vedrai questi sul client che hai fatto git push. Presumo che tu abbia seguito la guida alla parola, reso eseguibile lo script post-aggiornamento, clonato il repository nella cartella web ecc.

14

È possibile trovare un'alternativa migliore a http://toroid.org/ams/git-website-howto che utilizza solo un repository git e consente a tutti i metadati e la cronologia precedente di rimanere al di fuori di DocumentRoot.

La guida che hai utilizzato e quella a cui ho collegato il referrer ad un altro articolo sono entrambi basati, ma quello che ho collegato sembra essere quello preferito per indirizzare i nuovi utenti nel canale IRC#git.

+0

Grazie per quello. Utile! – Jacob

Problemi correlati