Como adiciono controle de versão ao meu fluxo de trabalho?

11

Eu desenvolvo temas, muitos deles. Recebi um PSD, codifique o HTML / CSS, introduza o código no Wordpress e faça as correções à medida que obtêm o controle de qualidade. Uma vez ativo, os clientes podem editar as postagens do blog normalmente ou fazer upload de fotos usando um plug-in personalizado.

Às vezes, tenho que fazer alterações no tema ou no conteúdo da página / postagem, o que significa que eu os vivo ou preciso fazer o download e configurar o site em um ambiente de desenvolvimento a ser aprovado pelo cliente. Não tenho backup, não tenho controle de versão e percebo que isso precisa mudar.

Git e Mercurial foram sugeridos, e eu gostaria de tirar proveito dessas ferramentas, mas estou confuso sobre como encaixá-las em um fluxo de trabalho.

Preciso de todas as alterações em um site em um servidor de desenvolvimento e depois as empurro ao vivo depois de aprovadas? Que tal escrever posts no blog? Parece um exagero escrever postagens no dev e enviar as alterações ao vivo, mas como sincronizar os bancos de dados se eles forem editados no site ao vivo? Eu vasculhei a internet. Alguma orientação seria apreciada.

cfree
fonte
Eu acho que isso se qualifica como uma questão fora do escopo do ecossistema. Veja aqui a discussão em andamento .
9138 Chip Bennett
4
@ChipBennett Eu discordo. As dependências específicas do WordPress entre temas, plugins e banco de dados e como elas afetam a prática geral do desenvolvedor são bem-vindas.
fuxia
@toscho Eu certamente poderia estar convencido disso; por isso apontei para a discussão do Meta. :)
Chip Bennett

Respostas:

9

Primeiro de tudo, você precisa reconhecer que existem dois fluxos de trabalho aqui: o seu e o seu cliente.

Seu fluxo de trabalho

  • Receba PSD
  • Código HTML / CSS
  • Modelo de código WordPress
  • Implantar tema no site WordPress ativo

Seu fluxo de trabalho

  • Crie as alterações necessárias e envie um e-mail para você
  • Escrever postagens
  • Upload fotos

O problema

A implementação do controle de versão aqui não tem absolutamente nada a ver com o fluxo de trabalho de seus clientes. É tudo sobre como acompanhar o código que você usa para o tema WordPress. Todos os seus arquivos de temas, plug-ins personalizados etc. devem estar em um sistema de controle de versão (Git, Mercurial, Subversion ou o que você escolher).

Seu fluxo de trabalho se torna:

  • Escreva código
  • Confirmar alterações no sistema de controle de versão
  • Enviar alterações ao site de produção
  • Obter comentários de volta do cliente
  • Escreva código
  • Confirmar alterações
  • Escreva código
  • Confirmar alterações
  • Enviar alterações ao site de produção

Lembre-se, trata-se de manter um histórico de controle de versão para o seu código . Código é algo que seus clientes não devem mudar - e você nunca deve mudar o código em um site de produção enquanto estiver em produção.

Mas as alterações no conteúdo (postagens, fotos, etc.) estão fora do escopo do seu sistema de controle de versão. Em outras palavras, você não faz alterações no desenvolvimento e envia o banco de dados à produção. Essa é uma má prática de desenvolvimento. Se você precisar que os bancos de dados dev e prod estejam sincronizados, deverá rotineiramente extrair um backup da caixa de produção e restaurar sua versão local a partir desse backup.

As alterações de código fluem do desenvolvimento para a produção.
As alterações no banco de dados fluem da produção para o desenvolvimento.

EAMann
fonte
Você não pode realmente sincronizar os bancos de dados facilmente, a menos que tenha um script especial que gerencia como os dados de conteúdo são armazenados no banco de dados. É por isso que você separa o código do conteúdo do seu fluxo de trabalho; a alternativa é usar um servidor intermediário ou tentar usar um dos scripts de sincronização do db ou escrever o seu próprio.
Wyck
@EAMann Ótima resposta, obrigado! A única coisa que eu acrescentaria ao fluxo de trabalho que você descreveu seria escrever código, confirmar alterações, enviar para o site de desenvolvimento, receber comentários do cliente, ... Eu não havia considerado dois fluxos de trabalho separados porque regularmente teríamos que alterar o nos contentamos com os clientes. Ocasionalmente, teremos que colocar HTML no conteúdo para acomodar solicitações especiais dentro do conteúdo (estilos especiais, etc.). Às vezes, eles exigem a aprovação do cliente antes de serem lançados, e é por isso que os bancos de dados precisariam sincronizar. Existem práticas recomendadas para esse tipo de configuração?
cfree
@Wyck Em vez de soltar o conteúdo ao lado do tema, faz sentido separar os dois processos. Eu gosto da ideia de uma área de desenvolvimento para temas e uma área de preparação para o conteúdo ser descartado independentemente um do outro. O único problema que vejo é que os clientes gostam de ver o tema e o conteúdo (o site na íntegra; páginas estáticas) antes de lançá-lo ao vivo.
cfree
Geralmente, não é uma questão de sincronizar alterações no banco de dados. O que eu quis dizer é que você despeja seu banco de dados de produção e substitui o banco de dados de desenvolvimento local por ele. É verdade que você pode automatizá-lo com um script ... mas provavelmente não o fará com muita frequência.
EAMann
3
Ainda não existe, é realmente um espinho no lado do WordPress, mas não é especificamente um problema do WordPress, pois muitos CMS têm esse problema, você pode ler sobre isso aqui wordpress.stackexchange.com/questions/119/… mais detalhadamente, alguns existem scripts lá fora, mas a maioria deles é interna porque é específica para um determinado ambiente.
Wyck
1

Você pode usar um software que sincroniza os bancos de dados. Mas também há a opção de versionar os dados em si com algo como http://chronicdb.com

Gary
fonte
Isso parece interessante; pode resolver alguns dos problemas. Vou verificar isso, obrigado.
cfree 13/02/12
1

Acabei de escrever uma resposta completa para isso em outra pergunta. Pessoalmente, eu uso o git e é fantástico. Para começar, recomendo consultar http://gitref.org/ e http://help.github.com/mac-set-up-git/ . Se você é do tipo de livro, eu li este e definitivamente vale o preço de US $ 22 em e-books. Faça você mesmo, você não vai se arrepender dessa decisão.

Matthew Boynes
fonte
Obrigado, vou ter que me referir a ele novamente. A configuração do banco de dados mestre / escravo parece interessante. Obrigado pela orientação
cfree