Minha equipe enfrentou um problema semelhante. Usamos o git para versão do nosso próprio código personalizado, como plugins e o tema que escrevemos. Usamos o Composer para gerenciar dependências, como plugins que não escrevemos. Verificamos os arquivos composer.json e composer.lock no git para manter todos sincronizados. Espera-se que cada desenvolvedor puxe a ramificação principal do git e execute composer update
seus playpens frequentemente, para que todos se mantenham atualizados.
No banco de dados, os desenvolvedores se preocupam principalmente com a configuração, e geralmente usamos o WP-CLI para manter a configuração sincronizada. Por exemplo, temos um script de shell que executa um comando WP-CLI para habilitar ou desabilitar plug-ins por host; alguns plug-ins são usados apenas em nosso host de armazenamento temporário de conteúdo, por exemplo, para que o script possa ser executado em qualquer host e habilite apenas o conjunto apropriado nesse host. Alguma configuração que consome muito tempo para script é apenas documentada e reproduzida manualmente, se necessário.
Também temos um script perl que clonará completamente o banco de dados do nosso servidor de armazenamento temporário para um host de controle de qualidade ou de desenvolvimento. Os desenvolvedores podem usar isso periodicamente se quiserem todo o conteúdo atual, embora isso geralmente seja menos importante do que ter o código e a configuração. O script executa estas tarefas:
- despejo mySQL do banco de dados do servidor de armazenamento temporário, altere os nomes das tabelas, carregue no banco de dados do servidor de destino
- use wp-cli para alterar as referências ao servidor intermediário no banco de dados para se referir ao servidor de destino
- sincronizar o diretório de uploads no servidor de destino com os uploads do servidor de armazenamento temporário de conteúdo
Existem algumas soluções promissoras para a versão do banco de dados que estão surgindo rapidamente. VersionPress e Mergebot são os dois que eu conheço e podem haver outros.
Eu escrevi mais detalhes técnicos de como configuramos o WordPress para trabalhar com o git e o Composer no meu blog. Era necessário executar com o núcleo do WordPress em seu próprio diretório para fazer uma separação limpa entre o código que queremos manter no git e no núcleo do WordPress. Tratamos o WordPress em si como uma dependência e o gerenciamos com o Composer.