Colleghi il Suo account GitHub a un sito e manterremo entrambi sincronizzati in entrambe le direzioni. È gratuito, rimane disattivato finché non lo attiva Lei, ed eseguiamo i commit solo ed esclusivamente in un repository appartenente a un Suo account — mai su uno dei nostri.
Cosa viene sincronizzato
Qualsiasi modifica apportata ai file del Suo sito diventa un commit nel Suo repository, indipendentemente da come l'ha effettuata: tramite file manager, SFTP, l'editor dei temi di WordPress o una sessione SSH. Non deve comunicarcelo: confrontiamo il Suo sito con il suo ultimo commit e inviamo la differenza tramite push.
Nella direzione opposta, un push inviato al Suo branch collegato viene applicato direttamente sul sito.
Cosa non includiamo mai nei commit
Il Suo file wp-config.php è escluso, deliberatamente e in modo permanente. Contiene la password del Suo database e i Suoi salt di autenticazione, dati che non devono risiedere in un repository — nemmeno in uno privato, poiché git ne conserva la cronologia per sempre.
Sono inoltre esclusi: i file .env, chiavi e certificati, la Sua cartella dei caricamenti (uploads), le cache e la cartella node_modules. Un repository rappresenta il codice sorgente del Suo sito, non un backup. I file multimediali appartengono ai Suoi backup, dove sono già conservati; includerli qui rallenterebbe ogni push e renderebbe illeggibile ogni modifica.
Cosa succede in caso di modifiche su entrambi i lati
Questa è la domanda fondamentale. Supponga di modificare un file tramite il file manager mentre, contemporaneamente, un collega invia un push con una modifica allo stesso repository.
Ci fermiamo. Non eseguiamo merge e non sovrascriviamo il lavoro di nessuno. La scheda Deploy del sito mostra il messaggio "Your repository has changes we haven't seen" ("Il Suo repository presenta modifiche non rilevate"), indica il commit da verificare e attende la Sua decisione. Durante l'attesa non viene perso nulla su entrambi i lati: la Sua modifica rimane sul sito e il commit del Suo collega rimane nel repository.
A questo punto può scegliere:
- Conserva i file di questo sito — applichiamo la Sua versione sopra la loro. I loro commit rimangono nella cronologia; non viene cancellato nulla.
- Usa il repository, annulla le modifiche del sito — la versione del repository viene applicata al sito e le modifiche apportate localmente vengono scartate. Questa operazione è distruttiva: per questo motivo richiede un clic esplicito e non verrà mai eseguita automaticamente per Suo conto.
Non è prevista alcuna opzione di "merge automatico", di proposito. Un merge eseguito da parte nostra genererebbe un file non scritto da nessuno dei due, su un sito in produzione, senza che nessuno lo abbia prima esaminato.
Motivi per cui la sincronizzazione potrebbe arrestarsi
- Non ha collegato il Suo account GitHub. La funzione rimane disattivata fino al collegamento.
- È in attesa di un Suo intervento. Come spiegato sopra, uno stato di blocco non si risolve da solo.
- Il Suo account non è in regola con i pagamenti. La sincronizzazione viene sospesa e riprenderà automaticamente non appena i pagamenti saranno aggiornati. Nessun dato andrà perduto.
La scheda Deploy mostra le ultime sincronizzazioni, incluse quelle in cui non è stata rilevata alcuna modifica. Se tale elenco è vuoto e la sincronizzazione è attiva, è molto probabile che l'account collegato non disponga dei permessi di scrittura nel repository: verifichi i permessi di accesso e ricolleghi l'account.
Scelta dei contenuti da sincronizzare
Per impostazione predefinita viene sincronizzato l'intero sito. Su un sito WordPress questo solitamente non è ciò che si desidera: significherebbe includere ogni singolo file del core di WordPress, che non ha scritto Lei e che non intende modificare. Imposti "Sincronizza solo questa cartella" sul Suo tema — ad esempio wp-content/themes/my-theme — e il resto rimarrà escluso.