Mentre questa è una vecchia domanda con una risposta accettata, credo che ci sia ancora spazio per un'altra.
Innanzi tutto, lasciatemi dire in anticipo che non credo che Features sia lo strumento giusto per questo compito e che proporrà una serie alternativa di strumenti.
Un prerequisito per la collaborazione di gruppo è disporre di un server di gestione temporanea per testare le versioni di sviluppo del progetto separate dal server di produzione. Tutto il codice di deviazione viene testato sul server di gestione temporanea e inviato al server di produzione solo quando è stabile e pronto per la distribuzione. Tuttavia, gli sviluppatori non funzionano direttamente sul server di gestione temporanea. Ogni sviluppatore lavora nella propria postazione di lavoro, utilizzando un controllo di revisione e una gestione del codice sorgente (SCM) per coordinare il proprio lavoro con il resto del team.
Il sistema SCM consente ai membri del team di lavorare in parallelo su diversi rami del codice senza interferire tra loro. Solo il ramo principale viene distribuito sul server di gestione temporanea a scopo di test.
Per eseguire il mirroring del database tra produzione, gestione temporanea e workstation, esiste un modulo denominato Backup e migrazione che può essere utilizzato se si utilizza l'hosting condiviso e non si gestisce il proprio database. Se gestisci il tuo server di database, questo è l'unico progetto su quel server e usi mysql , sono utili le seguenti coppie di comandi:
Scaricare:
mysqldump --all-databases --opt -u root -p > DUMP.sql
Ripristinare:
mysql -u root -p < DUMP.sql
Se il tuo non è l'unico database su quel server, esegui lo script di una versione di mysqldump
(o equivalente se non stai usando mysql ) che scarica solo i tuoi database.
Creare una politica che sia il database sul server di produzione a essere master. Il server di gestione temporanea e le workstation dovrebbero essere una copia del database di produzione, non viceversa.
Nota che Drupal 7 mantiene tutte le sue impostazioni di amministrazione nel database. Ciò significa che il mirroring del database tra il sito di produzione, il sito di gestione temporanea e le stazioni di lavoro eseguirà la migrazione delle impostazioni di admin senza funzionalità .
Ora, per condividere il codice:
Il modo standard per condividere il codice tra i membri di un team di sviluppo è utilizzare il sistema SCM. Drupal sembra essere gestito di default con un tale sistema chiamato git .
Git consente l'uso di repository locali o remoti. Se i membri del team si trovano nello stesso spazio fisico, è possibile impostare un repository locale sul server di gestione temporanea. Se sono distribuiti geograficamente, è possibile impostare un repository remoto. Se non ti dispiace che altri abbiano accesso in lettura al tuo codice in fase di sviluppo, puoi utilizzare un sandbox su Drupal.org come repository remoto. Puoi anche usare un'area di progetto su GitHub . GitHub non è solo un repository, ma include alcuni strumenti per la collaborazione e consente sia repository pubblici che privati.
Fondamentalmente, un sistema SCM consente ai membri del team di estrarre il codice sorgente e la documentazione dal repository condiviso dai membri del team e di reinserirlo dopo averci lavorato. L'SCM tiene traccia delle modifiche e in caso di conflitto (ovvero qualcuno cerca di spingere codice che non contenga le modifiche che un altro membro del team ha commesso), ti dirà e suggerirà anche un modo per risolvere questo conflitto.
Di solito, con qualche comunicazione cordiale su come i compiti sono divisi tra i membri del team, non ci saranno conflitti. Ma con il sistema SCM che tiene traccia delle cose, i conflitti diventano gestibili anche se vengono commessi errori o la comunicazione fallisce.
Esistono molti tutorial su come iniziare e usare git (GIYF). Due consiglierò: il sito web git-scm e Pro Git di Scott Chacon.