Gérer des sites avec Git


8

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

  • Utilisez WHM pour provisionner un nouveau compte. J'ai écrit un hook post-installation pour télécharger automatiquement Joomla depuis Github et le placer dans le public_htmlrépertoire approprié , ainsi que créer la base de données et l'utilisateur DB
  • Installez manuellement Joomla via l'interface Web (bien que vous cherchiez actuellement un moyen d'automatiser cela également)
  • Configurez un dépôt nu ci public_html- dessus - c'est là que les utilisateurs poussent et tirent. Nous appellerons celaorigin
  • Configurer un dépôt standard dans public_html
  • Ajouter un spécifique à Joomla .gitignore
  • Spécifiez le dépôt nu comme notre télécommande ( git remote add origin ../repo.git)
  • Effectuez git add .ensuite git commit -m"Initial J! Commit", puis git push origin masterpour obtenir l'installation par défaut dans notre référentiel nu
  • Ajoutez un post-receivecrochet au référentiel nu pour insérer automatiquement les modifications dans le référentiel public_html(car le référentiel nu est l'endroit où les développeurs pousseront les modifications locales)
  • Ajoutez un post-updatecrochet au référentiel au public_htmlcas où quelqu'un apporterait des modifications sur le serveur ... mais ils ne devraient pas

Je ne m'inquiète pas trop pour les bases de données pour le moment. Mon principal problème concerne désormais les ajouts / modifications de fichiers Joomla. Évidemment, lorsque j'installe 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.

Quelle est la meilleure façon de gérer ces changements sur le serveur? Je pensais à écrire un petit plugin qui fonctionne onAfterRenderou similaire que les utilisations PHPGit pour effectuer git add ., git commit git push origin master. Ensuite, dans ma copie locale, je peux simplement faire un pull et tout se passe. Ou existe-t-il une meilleure façon?

Réponses:


4

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

J'utilise uniquement public_html comme racine du dépôt, avec un .gitignore très complet (qui doit être mis à jour après chaque nouvelle mise à jour de Joomla!, Avec git statusvous trouvez les nouveaux fichiers et ajoutez-les pour qu'ils ne soient pas versionnés).

Les développeurs poussent vers les branches de développement; à la fin, lorsqu'une version est approuvée, elle est rebasée par rapport au maître, testée et mise en production.

Je n'utilise pas de hooks mais j'ai quelques scripts qui vident les parties de base de données pertinentes que je souhaite partager, mais laissez à l'utilisateur le soin d'exécuter les scripts d'importation s'il le souhaite; De cette façon, si quelqu'un travaille sur une nouvelle extension, il conservera sa configuration jusqu'à ce qu'il soit prêt à partager.

Si vous utilisez less / sass, vous souhaiterez peut-être 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 susceptible de changer avec chaque Joomla! mise à jour. Tout d'abord, assurez-vous que vos paramètres d'éclipse .project .set etc et autres que vous souhaitez exclure sont dans un maître .gitignore avec 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 du cache et du 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

donc je commence par le copier (depuis la racine web):

cp /home/_core/.gitignore .

Ensuite, faites exploser le pack de mise à jour (le package de mise à jour complet) et lancez-le

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

AVERTISSEMENT n'exécutez pas la recherche sur le site en direct, juste sur le package de mise à jour!

Exécutez quelques tests et voyez avec git status ce qui sera ajouté à chaque fois avant de finaliser la procédure et d'écrire des scripts bash pour cela: c'est ce que j'utilise, mais il n'est pas garanti qu'il répondra à vos besoins à 100%


Merci pour votre réponse - seriez-vous prêt à rendre public votre .gitignore? Actuellement, je suis le seul développeur et je suis assez nouveau pour Git, donc je suivais en ligne quelques conseils de flux de travail pour les développeurs Web pour me rendre où je suis, menant à la structure nue / publique.
codinghands

Non, je ne le collerai pas ici; Je viens d'ajouter des instructions pour le créer
Riccardo Zorn

Salut Riccardo - merci, j'ai déjà un assez complet .gitignore, je voulais juste voir des différences.
codinghands

Vous pouvez ignorer les dossiers globalement, par exemple: pour ignorer les dossiers de cache partout, ajoutez simplement cache/à votre .gitignore
jackJoe
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.