Gerenciando sites com Git


8

Estou começando a usar o Git para gerenciar as compilações do site Joomla, e estou procurando algumas orientações de melhores práticas. Tal como está:

  • Use o WHM para provisionar uma nova conta. Eu escrevi um gancho pós-instalação para baixar automaticamente o Joomla do Github e colocá-lo no public_htmldiretório relevante , além de criar o banco de dados e o usuário do banco de dados
  • Instale manualmente o Joomla através da interface da web (embora atualmente esteja procurando uma maneira de automatizar isso também)
  • Configure um repositório simples acima public_html- é aí que os usuários pressionam e puxam. Vamos chamar issoorigin
  • Configure um repositório padrão no public_html
  • Adicionar um específico do Joomla .gitignore
  • Especifique o repositório simples como nosso controle remoto ( git remote add origin ../repo.git)
  • Execute git add ., em seguida git commit -m"Initial J! Commit", git push origin masterpara obter a instalação padrão em nosso repositório simples
  • Adicione um post-receivegancho ao repositório simples para puxar alterações automaticamente para o repositório public_html(como o repositório básico é onde os desenvolvedores enviarão alterações locais)
  • Adicione um post-updategancho ao repositório public_htmlcaso alguém faça alterações no servidor ... embora não devam

Não estou muito preocupado com bancos de dados no momento. Meu principal problema agora é lidar com adições / alterações de arquivos Joomla. Obviamente, ao instalar modelos e extensões, certos arquivos serão adicionados e removidos. Da mesma forma, as atualizações do Joomla causarão alterações.

Qual é a melhor maneira de lidar com essas alterações no servidor? Eu estava pensando em escrever um plugin que corre onAfterRenderou similar que usos PHPGit para executar git add ., git commit git push origin master. Então, na minha cópia local, eu posso apenas dar um puxão e tudo acontece. Ou há uma maneira melhor?

Respostas:


4

Não entendo por que você configura a estrutura nua / pública;

Eu só uso o public_html como raiz do repositório, com um .gitignore muito completo (que precisa ser atualizado após cada nova atualização do Joomla !, git statusvocê encontra os novos arquivos e os adiciona para que não sejam versionados).

Os desenvolvedores pressionam para ramos de desenvolvimento; no final, quando uma versão é aprovada, ela é rebatizada contra o mestre, testada e enviada à produção.

Não uso ganchos, mas tenho alguns scripts que despejam as partes relevantes do banco de dados que desejo compartilhar, mas deixo para o usuário executar os scripts de importação, se assim o desejar; dessa forma, se alguém estiver trabalhando em uma nova extensão, manterá sua configuração até estar pronto para compartilhar.

Se você usar menos / sass, convém executar a compilação nos ganchos pós-confirmação para garantir que os sinalizadores de compactação estejam sempre ativados no servidor.

- atualização: .gitignore -

Não posso compartilhar meu .gitignore aqui, pois está sujeito a alterações com todos os Joomla! atualizar. Antes de tudo, verifique se o seu eclipse .project .settings etc e outros arquivos que você deseja excluir estão em um mestre .gitignore, juntamente com o configuration.php e .htaccess. Meu mestre .gitignore se parece com isso em um site com componentes desagradáveis ​​que gravam alterações em suas próprias pastas em vez de cache e tmp; Além disso, ele usa sass:

*/.sass-cache
/components/com_sobipro/var/cache/*
/components/com_djclassifieds/images/*
/components/com_sobipro/tmp/*
/components/com_sobipro/var/*
/log
/._db.sql
/logs
/stats
/components/com_sobipro/tmp/edit/*
/.buildpath
/.project
/.settings
/.htaccess
/images/icons/*
/images/photos/*
/images/sobipro/*
/images/classifieds/*
/administrator/cache/*
/tmp/*
/configuration.php
/index.php
/joomla.xml
*.txt

então eu começo copiando-o (da raiz da web):

cp /home/_core/.gitignore .

Em seguida, exploda o pacote de atualização (o pacote de atualização completa) e execute

find | sed "s/^\.//"  >> /home/yoursitefolder/public_html/.gitignore

AVISO não execute a localização no site ativo, apenas no pacote de atualização!

Execute alguns testes e veja com status git o que será adicionado a cada vez antes de finalizar o procedimento e escreva scripts bash para ele: é isso que estou usando, mas não há garantia de que ele atenda 100% aos seus requisitos


Obrigado pela sua resposta - você gostaria de tornar público o seu .gitignore? Atualmente sou o único desenvolvedor e sou bastante novo no Git, por isso segui algumas orientações on-line sobre o fluxo de trabalho para desenvolvedores da Web para chegar onde estou, levando à estrutura pública / vazia.
Codigohands

Não, eu não vou colar aqui; Acabei de adicionar direções para criá-la
Riccardo Zorn

Oi Riccardo - obrigado, eu já tenho um bastante completo .gitignore, só queria ver alguma diferença.
Codigohands

Você pode ignorar pastas globalmente, exemplo: ignorar pastas de cache em todos os lugares, basta adicionar cache/ao seu .gitignore
jackJoe
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.