Por meses, eu tenho tentado planejar uma boa estrutura de projeto para usar o controle de versão git para o desenvolvimento de sites WordPress que não sacrifica a capacidade de atualizar o núcleo e os plugins através do painel do WP, não requer uma estrutura de diretório não convencional (wp conteúdo fora da pasta pai do WP) e fácil de gerenciar e implantar sites inteiros. Eu li sobre submódulos, subárvores, repositórios aninhados, etc., e ainda estou tendo dificuldades para encaixar tudo e escolher a estratégia certa.
Aqui está o que estou pensando agora, com meus pensamentos sobre como eu lidaria com repositórios git entre parênteses.
root (main project repo)
|-- wordpress (public git repo added as subtree)
| |-- wp-content
| | |-- plugins
| | | |-- my-custom-plugin (git repo added as subtree)
| | | |-- other-plugin-with-git-repo (git repo added as subtree)
| | | +-- other-plugin-without-git-repo (ignored/untracked)
| | |-- themes
| | | |-- my-custom-theme (git repo added as subtree)
| | | |-- other-theme-with-git-repo (git repo added as subtree)
| | | +-- other-theme-without-git-repo (ignored/untracked)
| | +-- uploads (ignored/untracked)
| |-- wp-admin
| +-- wp-includes
|-- wp-config.php (ignored/untracked)
+-- other-files.txt
Isso me deixa com vários problemas / perguntas;
Atualizações automáticas; Adoro o novo recurso de atualizações automáticas, que pode economizar muito tempo e esforço para manter meus sites atualizados e seguros, mas parece que isso gera uma chave no rastreamento de alterações de código com o git. Existe alguma maneira de rastrear minhas alterações de código enquanto ainda permite que o núcleo do WordPress seja atualizado automaticamente?
Ter subárvores sob o repositório principal do WordPress me impede de usar o git para mesclar novas atualizações principais ou enviar minhas alterações de volta ao repositório principal do WordPress (se eu decidir que gostaria de ser um colaborador principal)?
Para plugins que não possuem um repositório público de git, ignorá-los completamente cria o problema de não poder clonar rapidamente o site inteiro em um novo servidor sem copiar manualmente os arquivos para o servidor. Isso também causa um problema se eu quiser fazer alterações no código desse plug-in, essas alterações não são rastreadas e podem ser facilmente perdidas em uma atualização de plug-in.
Então, para resumir, o que é uma boa configuração do git + WordPress que evita esses problemas? Agradecemos o seu feedback sobre minha estrutura de projeto proposta. De qualquer maneira que você possa me ajudar a melhorar isso, seria muito apreciado!
PS, se houver um fórum melhor para esta discussão, por favor me aponte para lá.
fonte
install.php
rotina personalizada ou algo assim e usar a mecânica de atualização normal a partir daí. A pilha do compositor pode lidar com as atualizações muito bem em resumo, mas depende da qualidade dos pacotes que você usa e coisas como proxy de repositórios oficiais do WP, pois ainda não está maduro.Você pode dar uma olhada neste problema e neste problema.
Veja também os arquivos LEIA-ME em cada repositório:
Com base nos repositórios acima, como outro exemplo de configuração do Git / WP, criei isso . Optei por usar links simbólicos para temas (eu tento cobrir isso no meu README ).
Mas estou no mesmo barco com as atualizações automáticas ... Meu plano era atualizar manualmente o submódulo WP quando as atualizações acontecessem. Eu acho que a alternativa é, em teoria (eu ainda tenho que me testar), permitir que o submódulo se atualize para atualizações menores (há uma configuração de WP para isso) e faça uma
git
força / redefinição do submódulo quando surgirem atualizações importantes ( talvez uma das respostas aqui possa ser de alguma ajuda ... é claro, acho que alguém desejaria direcionar uma tag WP específica ao atualizar para a próxima versão principal).Uma coisa a observar é que, se o WP vir
.git
no (s) caminho (s), ele desativará automaticamente as atualizações automáticas. Para mais informações, consulte:Outros links relacionados:
Atualização de maio de 2015
Criei este repositório, que é uma maneira rápida de iniciar projetos WordPress. Minha abordagem mais recente é controlar apenas a versão do (s) tema (s). Em outras palavras, eu instalo o WP localmente (usando a configuração no repositório mencionado acima) e na produção, modifico o arquivo de configuração em cada sistema e
git
puxo meu (s) tema (s) para obter um site funcional.fonte
Esse tipo de desenvolvimento se enquadra no "não é tão fácil e requer um fluxo de trabalho personalizado que pode levar muito tempo para ser satisfeito".
Acho Subárvores, submódulos ou repositórios aninhados, uma enorme dor na bunda.
Alguns pensamentos (acompanhem tudo).
add_filter( 'auto_upgrade_ignore_checkout_status', '__return_true' );
Método seguro via confirmação manual + email:
Você pode usar um servidor de armazenamento temporário e notificações por atualização por e-mail, confirmar as atualizações e enviar para o servidor ativo com as atualizações automáticas desativadas.
Isso também permite que você copie / cole pastas para seus próprios repositórios à vontade, o que geralmente é o que faço. Também facilita a clonagem / destruição de vários servidores de armazenamento temporário, o git realmente entra em vigor com esse método, uma vez que é distribuído.
A desvantagem: copiar / colar pastas, gerenciamento.
Método automático
Configure um script de construção (Phing, Ant, Bash, Capistrano, etc) e algum código personalizado que faça um git add + commit quando uma atualização for aplicada e envie-a para o servidor ativo. Você também pode separar os plugins / repositórios de temas e, em seguida, solicitar que o script compile / mova / o que quer que seja e / ou use o Composer na mistura.
Automatizar um fluxo de trabalho como esse também tende a ser inflexível e só vale a pena se você observar uma necessidade real do tempo investido.
A desvantagem: inflexível, leva tempo para criar.
O Git não deve ser usado para backups e, em geral, não é necessário clonar o histórico de consolidação do WP.
fonte
Depois de pensar um pouco mais, como eu definitivamente quero tirar proveito das atualizações nativas do WP para me poupar trabalho, não faz sentido rastrear nada que o WP atualize usando o git. Aqui está uma ideia revisada.
Obviamente, perco a capacidade de rastrear quais plug-ins e temas fazem parte do projeto no VCS, mas eu realmente só preciso disso para fins de backup e, de qualquer maneira, usarei algum tipo de sistema de backup regular.
Portanto, a única coisa que realmente falta é a capacidade de implantar facilmente a pilha inteira em diferentes servidores sem usar o FTP para copiar manualmente a coisa toda. Alguém tem alguma ideia sobre isso?
fonte
Ok, assistindo a conversa de Mark Jaquith aqui , talvez eu esteja no caminho errado. Aqui está outra facada que rastreia tudo.
Eu acho que a principal desvantagem disso é ter um diretório de conteúdo personalizado, o que causou problemas para mim no passado, com plugins e temas mal escritos e não sendo possível encontrar o diretório de conteúdo.
fonte