web-dev-qa-db-fra.com

Gérer des sites avec Git

Je commence à utiliser Git pour gérer les versions de site Joomla et je recherche des conseils sur les meilleures pratiques. Tel qu'il est:

  • Utilisez WHM pour créer un nouveau compte. J'ai écrit un hook de post-installation pour télécharger automatiquement Joomla depuis Github et le placer dans le répertoire public_html Approprié, ainsi que pour créer la base de données et l'utilisateur de la base de données.
  • Installez manuellement Joomla via l'interface Web (bien que vous recherchiez actuellement un moyen d'automatiser cela également)
  • Configurez un repo nu au-dessus de public_html - c’est là que les utilisateurs appuient et extraient. Nous appellerons cela Origin
  • Configurez un dépôt standard dans public_html
  • Ajouter un .gitignore Spécifique à Joomla
  • Spécifiez le dépôt nu comme télécommande (git remote add Origin ../repo.git)
  • Effectuez git add ., Puis git commit -m"Initial J! Commit", Puis git Push Origin master Pour obtenir l'installation par défaut dans notre référentiel nu
  • Ajoutez un point d'ancrage post-receive Au référentiel nu pour extraire automatiquement les modifications dans le référentiel dans public_html (Car le référentiel nu est l'emplacement où les développeurs appliqueront les modifications locales).
  • Ajoutez un point d'ancrage post-update Au référentiel dans public_html Au cas où quelqu'un apporterait des modifications sur le serveur ... alors qu'elles ne le devraient pas.

Je ne suis pas trop inquiet pour les bases de données pour le moment. Mon problème principal concerne maintenant les ajouts/modifications de fichiers Joomla. Évidemment, lors de l'installation des modèles et des extensions, certains fichiers vont être ajoutés et supprimés. De même, les mises à jour de Joomla entraîneront des modifications.

Quel est le meilleur moyen de gérer ces modifications sur le serveur? Je pensais écrire un petit plugin qui utilise onAfterRender ou similaire et qui utilise PHPGit pour exécuter git add ., git commitgit Push Origin master. Ensuite, dans ma copie locale, je peux simplement tirer et tout passe. Ou y a-t-il un meilleur moyen?

8
codinghands

Je ne comprends pas pourquoi vous avez mis en place la structure nue/publique;

J'utilise uniquement public_html comme racine du référentiel, avec un .gitignore très complet (qui doit être mis à jour après chaque nouvelle mise à jour de Joomla!, Avec git status vous trouvez les nouveaux fichiers et les ajoutez afin qu’ils ne soient pas versionnés).

Développeurs Push aux branches de développement; à la fin, lorsqu'une version est approuvée, elle est basée sur le maître, testée et mise en production.

Je n'utilise pas de points d'ancrage, mais quelques scripts dump les éléments de base de données pertinents que je souhaite partager, mais laissez à l'utilisateur le soin d'exécuter les scripts d'importation s'il le souhaite. Ainsi, si quelqu'un travaille sur une nouvelle extension, il conservera sa configuration jusqu'à ce qu'il soit prêt à être partagé.

Si vous utilisez less/sass, vous pouvez exécuter la compilation dans les hooks post-commit pour vous assurer que les indicateurs de compression sont toujours activés sur le serveur.

- mise à jour: .gitignore -

Je ne peux pas partager mon .gitignore ici car il est sujet à changer avec chaque Joomla! mise à jour. Tout d’abord, assurez-vous que votre .project .settings, etc., et les autres fichiers que vous souhaitez exclure se trouvent dans un .gitignore principal, ainsi que configuration.php et .htaccess. Mon maître .gitignore ressemble à ceci pour un site avec des composants désagréables qui écrivent les modifications dans leurs propres dossiers au lieu de cache et tmp; en plus il utilise 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

je commence donc par le copier (à partir de la racine Web):

cp /home/_core/.gitignore .

Puis éclatez le pack de mise à jour (le package de mise à jour complet) et exécutez-le.

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

WARNING ne lancez pas la recherche sur le site actif, uniquement sur le package de mise à jour!

Exécutez quelques tests et voyez avec le statut git ce qui sera ajouté à chaque fois avant de finaliser la procédure et d’écrire des scripts bash: c’est ce que j’utilise mais il n’est pas garanti que cela corresponde à vos exigences 100%

4
Riccardo Zorn