Come creare un file di aggiornamento "git push" sul tuo host web?

12

Ho alcuni siti che sono tutti ospitati sullo stesso servizio di hosting web in hosting condiviso. Il mio web host supporta Git e io ho accesso SSH ad esso, e ho anche Git setup sul mio laptop.

Voglio fare in modo che quando faccio un "git push origin master", aggiorni automaticamente i file sul mio server web, e salvi anche un backup dei file del commit precedente così posso facilmente eseguire il rollback se voglio a. È possibile?

    
posta Ryan 08.09.2013 - 19:08
fonte

2 risposte

12

Questo è riepilogato da Uso di Git per gestire un sito web

La chiave del processo è il gancio lato server 'post-ricezione' (altro su git hooks su Personalizzazione Git - Git Hooks e la pagina man di githooks ). Questo hook viene eseguito dopo che il server ha ricevuto tutti i dati.

Una volta che il server riceve i dati, esegue git checkout -f L'opzione -f impone un checkout alla testa anche se ci sono differenze locali.

#!/bin/sh
GIT_WORK_TREE=/var/www/www.example.org git checkout -f

Metti questo nella directory hooks/ come post-receive ed eseguibile. Naturalmente, il percorso cambia in dove sono i file del server web (l'uso di GIT_WORK_TREE imposta la variabile di ambiente in modo che non sia necessario manipolare i file di punti e le impostazioni git sul server).

Per il rollback, si dovrebbe taggare ogni release (questo può essere fatto anche come parte del hook post-commit). Tagliando il rilascio si può facilmente identificare il punto in cui eseguire il rollback, sebbene ciò implichi probabilmente l'accesso al server e il controllo di quel tag.

    
risposta data 08.09.2013 - 19:49
fonte
0

Il modo più semplice per aggiornare l'albero di lavoro del repository che stai premendo è l'impostazione %codice% dal lato del ricevitore. Vedere link

La risposta di Ryan con i ganci post commit è migliore in quanto consente di effettuare il check-out in una posizione diversa (probabilmente non si desidera avere il .git nella cartella Web). Ma a questo livello, potrebbe essere una buona idea utilizzare alcuni strumenti di distribuzione esistenti, come sleske ha detto nei commenti.

    
risposta data 18.01.2018 - 13:31
fonte

Leggi altre domande sui tag