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:
public_html
Approprié, ainsi que pour créer la base de données et l'utilisateur de la base de données.public_html
- c’est là que les utilisateurs appuient et extraient. Nous appellerons cela Origin
public_html
.gitignore
Spécifique à Joomlagit remote add Origin ../repo.git
)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 nupost-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).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 commit
git Push Origin master
. Ensuite, dans ma copie locale, je peux simplement tirer et tout passe. Ou y a-t-il un meilleur moyen?
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%