2012-05-11 20 views
6

Ho cercato in diversi modi di distribuzione di siti utilizzando git, e ha trovato il seguente tutorial:git distribuire con sottomoduli

http://42pixels.com/blog/quick-and-dirty-git-deployment

mi piacciono le idee presentate in questo tutorial, e sarebbe appassionato di utilizzandolo per i miei siti, solo che non sembra supportare i sottomoduli.

C'è comunque che questo può essere modificato in modo che anche i sottomoduli vengano richiamati e aggiornati come richiesto?

Grazie.

UPDATE

Ho lavorato su questo problema per l'ultimo paio di ore, e mi sembra di essere facendo progressi, ma non riesco ancora a farlo funzionare.

Sono passato a questo tutorial: http://toroid.org/ams/git-website-howto (che è per lo più lo stesso, solo alcune lievi modifiche), e dopo aver seguito alcuni consigli trovati qui: https://stackoverflow.com/a/6636509/1049688 Ho finito con un file di post-ricezione che assomiglia questo:

#!/bin/sh 

export GIT_WORK_TREE=/srv/www/limeblast.co.uk/htdocs_test 
export GIT_DIR=/srv/www/limeblast.co.uk/.git 
cd $GIT_WORK_TREE 

git checkout -f master 
git submodule init 
git submodule update 

il tutto sembra che vada bene in teoria, e sembrerebbe che i comandi sottomodulo sono in esecuzione, ma sto ottenendo i seguenti messaggi di errore indietro:

remoto: sottomodulo 'wordpress' (git: //github.com/WordPress/WordPress.git) registrato per il percorso 'wordpress' remote: submodule 'wp-content/themes/limeblastevolution/inc/cssCrush' (git: //github.com/peteboere/css-crush.git) registrato per il percorso 'wp-content/themes/limeblastevolution/inc/cssCrush ' remote: fatale: l'albero di lavoro' /srv/www/limeblast.co.uk/htdocs_test 'esiste già. distanza: clone di 'git: //github.com/WordPress/WordPress.git' nel modulo di percorso 'wordpress' fallito

Tutte le idee? Grazie.

risposta

6

Potresti avere successo con git-deploy.

ma se questo è troppo focalizzata on Rails o se non può o non usarlo per altre ragioni, qui è come forzare un aggiornamento del modulo in un post-commit hook:

git submodule init && git submodule sync && git submodule update 

È necessario eseguire questo sul server; quindi probabilmente è meglio aggiungerlo allo script hooks/post-receive. È semplice BASH o SH, a parte.

+2

Grazie per il vostro aiuto. Ho aggiunto questa riga al mio file di post-ricezione, ma dopo il caricamento e il checkout iniziali (che sembrano funzionare tutti bene) ottengo il messaggio di errore "remote: è necessario eseguire questo comando dal livello superiore dell'albero di lavoro. " in relazione al materiale del sottomodulo. Qualche idea? Saluti. –

Problemi correlati