Directory del sito: /var/www/domain.com
Repository: /var/www/domain.com
Ora vediamo come pubblicare automaticamente sul sito dopo aver fatto push
cd /var
mkdir repo && cd repo
mkdir site.git && cd site.git
git init --bare
--bare
significa che la nostra cartella non avrà file sorgenti, ma solo il controllo di versione.
I repository Git hanno una cartella chiamata "hooks". Questa cartella contiene alcuni file di esempio per le possibili azioni che è possibile agganciare per eseguire azioni automatiche personalizzate.
Git definisce tre possibili hooks: 'pre-receive', 'post-receive' e 'update':
pre-receive
viene eseguito non appena il server riceve una 'push';update
è simile, ma viene eseguito una volta per ogni ramo;post-receive
viene eseguito quando un 'push' è completamente finito ed è quello che fa al caso nostro!
Entriamo nella cartella hooks del repository e creiamo il file post-receive
cd hooks
cat > post-receive
Quando eseguiamo il comando cat
tutto quello che scriviamo verrà salvato nel file, scriviamo:
#!/bin/sh
git --work-tree=/var/www/domain.com --git-dir=/var/repo/site.git checkout -f
Una volta finito, premiamo control + d
per salvare. Per eseguire il file però dobbiamo prima renderlo eseguibile, facciamolo con questo comando:
chmod +x post-receive
il file post-receive
verrà eseguito ogni volta che facciamo un push.
Creiamo un repository
cd /my/workspace
mkdir project && cd project
git init
Poi abbiamo bisogno di configurare il percorso remoto del nostro repository appena configurato sul VPS. In questo esempio abbiamo deciso che il suo nome sarà live
git remote add live ssh://[email protected]/var/repo/site.git
A questo punto per pubblicare la tua completissima versione stratestata :) ti basterà dare un bel:
git push live master