Gestione dei siti con Git


8

Sto iniziando a utilizzare Git per gestire le build del sito Joomla e sto cercando alcune indicazioni sulle migliori pratiche. Così com'è:

  • Utilizzare WHM per eseguire il provisioning di un nuovo account. Ho scritto un hook post-installazione per scaricare automaticamente Joomla da Github e posizionarlo nella relativa public_htmldirectory, nonché creare il database e l'utente DB
  • Installa manualmente Joomla tramite l'interfaccia web (anche se attualmente stai cercando un modo per automatizzare anche questo)
  • Imposta un repository nudo sopra public_html: qui è dove gli utenti spingono e tirano. Chiameremo questoorigin
  • Imposta un repository standard in public_html
  • Aggiungi uno specifico di Joomla .gitignore
  • Specifica il repository nudo come remote ( git remote add origin ../repo.git)
  • Eseguire git add ., quindi git commit -m"Initial J! Commit", git push origin masterper ottenere l'installazione predefinita nel nostro repository nudo
  • Aggiungi un post-receivehook al repository nudo per inserire automaticamente le modifiche nel repository public_html(poiché il repository nudo è il punto in cui gli sviluppatori invieranno le modifiche locali)
  • Aggiungi un post-updatehook al repository nel public_htmlcaso in cui qualcuno apporti modifiche sul server ... anche se non dovrebbero

Non sono troppo preoccupato per i database al momento. Il mio problema principale ora riguarda le aggiunte / modifiche al file Joomla. Ovviamente, quando installo modelli ed estensioni, alcuni file verranno aggiunti e rimossi. Allo stesso modo gli aggiornamenti di Joomla causeranno cambiamenti.

Qual è il modo migliore per gestire queste modifiche sul server? Stavo pensando di scrivere un piccolo plugin che corre onAfterRendero simile che utilizza PHPGit da eseguire git add ., git commit git push origin master. Quindi, nella mia copia locale, posso solo fare un tiro e tutto passa. O c'è un modo migliore?

Risposte:


4

Non capisco perché hai impostato la struttura nuda / pubblica;

Uso solo public_html come root del repository, con un .gitignore molto completo (che deve essere aggiornato dopo ogni nuovo aggiornamento di Joomla !, con git statuste trovi i nuovi file e li aggiungi in modo che non vengano aggiornati ).

Gli sviluppatori spingono verso i rami di sviluppo; alla fine, quando viene approvata una versione, viene nuovamente confrontata con il master, testata e portata alla produzione.

Non uso hook ma ho un paio di script che scaricano le parti di database pertinenti che desidero condividere, ma lo lascia all'utente per eseguire gli script di importazione se lo desiderano; in questo modo se qualcuno sta lavorando su una nuova estensione, manterrà la propria configurazione fino a quando non sarà pronto per la condivisione.

Se si utilizza less / sass, è possibile che si desideri eseguire la compilazione negli hook post-commit per assicurarsi che i flag di compressione siano sempre attivi sul server.

- aggiornamento: .gitignore -

Non posso condividere qui il mio .gitignore poiché è soggetto a modifiche con ogni Joomla! aggiornare. Prima di tutto, assicurati che il tuo eclissi .project .settings etc e altri file che desideri escludere siano in un master .gitignore insieme a configuration.php e .htaccess. Il mio maestro .gitignore assomiglia a questo per un sito con componenti cattivi che scrivono modifiche nelle proprie cartelle anziché cache e tmp; inoltre usa sass:

*/.sass-cache
/components/com_sobipro/var/cache/*
/components/com_djclassifieds/images/*
/components/com_sobipro/tmp/*
/components/com_sobipro/var/*
/log
/._db.sql
/logs
/stats
/components/com_sobipro/tmp/edit/*
/.buildpath
/.project
/.settings
/.htaccess
/images/icons/*
/images/photos/*
/images/sobipro/*
/images/classifieds/*
/administrator/cache/*
/tmp/*
/configuration.php
/index.php
/joomla.xml
*.txt

quindi inizio copiandolo (dalla radice del web):

cp /home/_core/.gitignore .

Quindi esplodere il pacchetto di aggiornamento (il pacchetto di aggiornamento completo) ed eseguire

find | sed "s/^\.//"  >> /home/yoursitefolder/public_html/.gitignore

ATTENZIONE non eseguire la ricerca sul sito live, solo sul pacchetto di aggiornamento!

Esegui un paio di test e vedi con lo stato git cosa verrà aggiunto ogni volta prima di finalizzare la procedura e scrivi degli script bash per questo: questo è quello che sto usando ma non è garantito che soddisfi le tue esigenze al 100%


Grazie per la tua risposta - saresti disposto a rendere pubblica la tua .gitignore? Attualmente sono l'unico sviluppatore e sono abbastanza nuovo in Git, quindi stavo seguendo alcune indicazioni sul flusso di lavoro degli sviluppatori web online per portarmi dove sono, portando alla struttura nuda / pubblica.
codinghands,

No, non lo incollerò qui; Ho appena aggiunto le indicazioni per crearlo
Riccardo Zorn,

Ciao Riccardo - grazie, ho già abbastanza completo .gitignore , volevo solo vedere eventuali differenze.
codinghands,

Puoi ignorare le cartelle a livello globale, ad esempio: per ignorare le cartelle cache ovunque, basta aggiungere cache/al tuo
.gitignore
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.