SVN per Joomla
SVN, abbreviazione di SubVersion, è un progetto open source di Tigris che permette di mantenere le revisioni del vostro codice, sia esso php, css, configurazioni, o addirittura dump del database
Naturalmente non tratteremo qui l'utilizzo di svn, che è rimandato alla documentazione ufficiale (il “red book”), ed alle migliaia di guide già realizzate.
Tuttavia è importante considerare alcuni aspetti specifici per joomla; di seguito una descrizione delle attività più comuni con esempi di comandi.
Premessa: i requisiti
Gli aggiornamenti Joomla
Nel nostro lavoro dobbiamo considerare il codice di Joomla come prodotto software di terza parte, che deve essere tracciabile separatamente dal nostro lavoro. In particolare, l'esigenza è di poter trattare tutte le nostre modifiche separatamente da quelle di Joomla. Infatti, durante il corso di ciascun progetto di dimensioni medie vengono rilasciati aggiornamenti a Joomla, che spesso consistono di centiaia di modifiche: avere queste mischiate con le nostre è non solo fonte di confusione, ma aumenta notevolmente il tempo necessario per trovare informazioni.
I file che devono andare sotto svn
Normalmente su un progetto al quale abbiamo aggiunto file eseguiamo il comando
svn add * --force
per aggiungere tutti i files (anche nelle sottocartelle) che sono stati aggiunti.
Tuttavia Joomla include parecchi files che non devono essere assolutamente aggiunti all'svn, perché riguardano cache, configurazioni locali, file temporanei che non vanno condivisi. Inoltre molti componenti salvano files temporanei, cache ecc. sotto la propria cartella (pessima “practice”, ma non possiamo correggere tutto il codice che ci arriva, no?)
Il database
Il database di Joomla può diventare molto pesante, quindi è indicato eseguire diverse esportazioni, trattando diversamente i seguenti aspetti:
|
Descrizione |
Dove si può modificare |
Contenuti |
Tipo di dump |
1 |
la parte operativa |
dati dinamici che vengono modificati continuamente nel sito in produzione |
contenuti, utenti, contenuti dei cck e dei componenti installati ad es. sef, sondaggi, segnalazioni e richieste utenti, e tutta la creazione dei contenuti, versioni, cache, sessioni |
È incluso nel dump completo, non serve una esportazione separata; il dump completo si fa solo per avere un backup aggiuntivo, ed è meglio che sia compresso |
2 |
la struttura della parte operativa |
Sia in produzione che in sviluppo e test |
le categorie, menu, moduli |
Esportazione in formato SQL/testo, in questo modo si possono analizzare le differenze di configurazione usando gli strumenti di svn |
3 |
la struttura del sito, la parte “amministrativa” |
Sia in produzione che in sviluppo e test |
tutto il resto, quindi configurazioni ecc. |
E' indicato realizzare un dump tramite script per automatizzarlo ed evitare errori grossolani.
I comandi
L'istruzione svn add dovrà quindi essere seguita da una serie di svn remove con il parametro --keep-local, che servirà ad evitare che il file in questione venga rimosso;
Per questo uno script di add/commit è indicato, visto che l'operazione è complessa, e va eseguita molto spesso.
./.nameofyourhiddenfolder/svn-add.sh
mysqldump -u username -p database --ignore-table=database.jos_session --ignore-table=database.jos_content --ignore-table=database.jos_menu > database_config.sql
mysqldump -u username -p database jos_menu > database_menu.sql
mysqldump -u username -p database | gzip -9 > database_full_%date%.sql.gz
oppure ometti la pipe | gzip per tenere i dati non-compressi; questi di solito, con le dovute accortezze (escludere le tabelle grandi) sono preferibili
or simply omit the pipe to gzip to keep the data in clear, this should be sufficient for most tasks.
Then you'll want to svn add all meaningful files:
Gli strumenti: branch e tag
Le branch in un progetto vengono in aiuto per separare logicamente alcune attività, l'utilizzo principale in Joomla è:
-
realizzare componenti custom
-
aggiornare il sistema ed installare / rimuovere componenti
-
modifiche / aggiunte a Joomla ed a componenti di terza parte (il nostro lavoro)
Riferimenti
- SVN Best Practices: http://svn.apache.org/repos/asf/subversion/trunk/doc/user/svn-best-practices.html all'ultimo paragrafo Know when to create branches
- Using Branches dal red book: http://svnbook.red-bean.com/en/1.1/ch04s02.html
- Tags and Branches: un ottimo articolo http://www.pushok.com/help/svnscc/adv/tagsbranches.html