2010-06-18 10 views
5

Siamo un team di molti sviluppatori che lavorano su un sito Web che utilizza sia script PHP personalizzati che Joomla. Il problema è che ci sono più sviluppatori che lavorano su varie funzionalità che hanno bisogno di aggiornare le informazioni in Joomla (aggiungendo moduli, cambiando quelli esistenti o modificando le impostazioni) e quando uno sviluppatore cambia qualcosa, di solito apporta la modifica localmente prima e poi fa la stessa cosa (si spera) sul server di produzione. Non solo questo è molto suscettibile agli errori, ma gli sviluppatori spesso dimenticano di dire agli altri sviluppatori delle modifiche. Gli script PHP personalizzati sono facilmente condivisi tra gli sviluppatori, ma le modifiche in Joomla vengono spesso dimenticate e causano seri conflitti quando uno sviluppatore tenta di replicare le sue modifiche locali nella produzione.È possibile posizionare Joomla sotto controllo di revisione?

Ho pensato di posizionare Joomla in un repository Mercurial, ma come possiamo distribuire le modifiche nel database tra lo sviluppo, il testing e le macchine di produzione?

risposta

6

Eseguiamo tutti i nostri siti Joomla su sovversione, controllandoli come richiesto. Ci limitiamo a rammentare ogni volta che è necessario apportare modifiche importanti a un progetto.

In generale, eseguiamo un singolo database di test che è condiviso tra tutti per garantire che abbiamo dati coerenti ma è possibile eseguire facilmente anche i DB locali.

0

Se si compila tutto come estensioni (moduli, componenti e plug-in), è necessario includere tutte le modifiche al database richieste. Vorrei configurarlo in modo che ogni sviluppatore stia lavorando fuori dal proprio database locale. Se hai bisogno di dati di test caricati, creerei solo script MySQL che possono essere eseguiti dopo aver installato tutte le estensioni. Dal momento che tutto questo può essere controllato in un repository, dovresti essere bravo con chiunque condivida il codice.

Utilizzando PHP, si dovrebbe essere in grado di scrivere uno script rapido che inizierà con un server vuoto, installare Joomla !, installare tutte le estensioni e quindi eseguire il dump in qualsiasi dato di test. Avere questo sarà anche utile per gli sviluppatori per tornare a uno stato "pulito". Vorrei incoraggiare gli sviluppatori a ripristinare lo stato d'oro prima di iniziare qualsiasi nuovo lavoro.

Un'altra idea sarebbe usare mysqldump per scaricare tutte le tabelle. Se un utente effettua una modifica del database sul proprio computer locale, deve anche scaricare le modifiche e verificarlo.

0

Utilizziamo SVN sul nostro server per gestire questi tipi di problemi. Se hai intenzione di fare qualsiasi sviluppo produttivo con un gruppo di persone devi usare un sistema di controllo di revisione. C'è un numero là fuori, un google per svn, cvs, git, quelli sono alcuni dei sistemi di controllo di versione più comunemente accettati. Potrebbe essere necessario un po 'di tempo per eseguire l'installazione inizialmente, ma ne raccoglierai i frutti!

Spero che questo aiuti! Cheers

+0

Il problema principale è che database e il fatto che non possiamo controllare quali modifiche vengono apportate al database quando installiamo o rimuoviamo un componente Joomla di terze parti. – Tom

+0

È possibile eseguire il check-in dei file sql a cui tutti gli utenti avrebbero accesso. È possibile memorizzare in questi, aggiornare le routine di dati o aggiungere colonne ecc. Come si desidera. Forse un file sql per tabella. In questo modo puoi vedere cosa è cambiato dalla configurazione iniziale del database e puoi applicare queste modifiche alle nuove impostazioni del database quando necessario. – Martin

2

Utilizziamo SVN per tutti i nostri clienti con database separati. Quando si installa una nuova estensione, il database cambia. Con un diff del databasedump precedente e il databasedump dopo l'installazione dell'estensione sappiamo quali sono le differenze.

+0

Anche una bella idea! Vorrei che ci fosse un modo per dividere le risposte ... – Tom

1

La sincronizzazione del database è complicata, poiché si desidera mantenere il contenuto archiviato nel sito live, mentre si aggiornano altre tabelle dai siti di sviluppo/dev.

se fossero solo i tuoi sviluppatori a creare le modifiche al database (e non le estensioni di terze parti che aggiungono tabelle aggiuntive sconosciute), potresti guardare qualcosa come DBV https://github.com/victorstanciu/dbv.

Ho avuto un discreto successo con l'utilizzo di strumenti di database come Navicat per l'impostazione di sincronizzazioni di database pianificate.Questo sarebbe il mio suggerimento in quanto fornisce la massima flessibilità nel definire quali tabelle sono sincronizzate dove e quando.

Un'altra opzione potrebbe essere quella di guardare la replica di MySQL, ma l'ultima volta ho guardato che era difficile da configurare, quando non vi era alcuna evidente relazione master/slave tra le banche dati per essere sincronizzato

Problemi correlati