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