Le module Versioning pour Magento 1

Sommaire

  1. Présentation du module
    1. Description
    2. Accès et configuration
    3. Installation et désinstallation
  2. Procédure d'installation
    1. Avec GIT
    2. Avec BZR
    3. Avec SVN
  3. Configuration
    1. Gestionnaire de projet
    2. Page de connexion
    3. Pages de maintenance
  4. Extra
    1. Événements
    2. Temporisation de sortie
    3. Authentification SSH
  5. Téléchargement et démo du module
  6. Support

N'oubliez pas que cette documentation ne concerne que la dernière version du module.
N'oubliez pas de lire cette page entièrement.

Présentation du module

Description

Ce module permet :

Un doute avant de faire une mise à jour ? Vérifiez le diff !
Avant d'aller plus loin, voici une vidéo de présentation : voir la vidéo.

Accès et configuration

Configuration disponible dans Système » Configuration » Outils » Gestionnaire de version.
Disponible dans Outils » Gestionnaire de version.

Capture d'écran de la page de configuration
Capture d'écran de la page de configuration (1/6)
Capture d'écran de l'historique des révisions
Capture d'écran de l'historique des révisions (2/6)
Capture d'écran des différences entre deux révisions
Capture d'écran des différences entre deux révisions (3/6)
Capture d'écran de l'état du dépôt
Capture d'écran de l'état du dépôt (4/6)
Capture d'écran de l'historique des mises à jour
Capture d'écran de l'historique des mises à jour (5/6)
Capture d'écran de la page de connexion
Capture d'écran de la page de connexion (6/6)

Installation et désinstallation

Afin de réaliser l'installation complète du module, il faut suivre la procédure d'installation. Après avoir suivi les différentes étapes, il ne reste plus qu'à installer le module avec Magento connect (ou en décompressant l'archive du module à la racine de Magento) avant de valider/commiter toutes les modifications. La clef d'extension est disponible à la fin de cette documentation.

Pour la désinstallation, après avoir annulé le commit d'installation du module, il ne reste plus qu'à effacer la configuration :

DELETE FROM core_config_data WHERE path LIKE "versioning/%";

Procédure d'installation

Veuillez noter que :
- vous pouvez déplacer Magento dans un sous dossier du dépôt
- tous les changements effectués seront annulés lors du processus de mise à jour (sauf pour les fichiers ignorés)
- il est important que l'utilisateur qui exécute le serveur web ait la possibilité de modifier tous les fichiers
- il ne faut pas changer de branche via le module

Quel que soit le gestionnaire de version utilisé, ce tutoriel va droit à l'essentiel. Après avoir suivi les différentes étapes, il ne reste plus qu'à installer le module avec Magento connect (ou en décompressant l'archive du module à la racine de Magento) avant de valider/commiter toutes les modifications.

Avec GIT

(1) Premièrement, pour le fichier gitignore :

/errors/config/*.ip
/errors/config/*.dat
/errors/config/*.csv
/maintenance.flag
/upgrade.flag

(2) Deuxièmement, pour le fichier index.php :

// replace
if (file_exists($maintenanceFile)) {
	include_once dirname(__FILE__).'/errors/503.php';
	exit;
}
// by
// https://www.luigifab.info/magento/versioning
if (is_file('./maintenance.flag') && (strpos(getenv('REQUEST_URI'), '/admin/') === false)) {
	$ips = './errors/config/error503.ip';
	if (!is_file($ips) || (is_file($ips) && (strpos(file_get_contents($ips), '-'.getenv('REMOTE_ADDR').'-') === false))) {
		include_once('./errors/503.php');
		exit(0);
	}
}
if (is_file('./upgrade.flag') && (strpos(getenv('REQUEST_URI'), '/admin/') === false)) {
	$ips = './errors/config/upgrade.ip';
	if (!is_file($ips) || (is_file($ips) && (strpos(file_get_contents($ips), '-'.getenv('REMOTE_ADDR').'-') === false))) {
		include_once('./errors/upgrade.php');
		exit(0);
	}
}

(3) Troisièmement, il faut supprimer le dossier errors.

(4) Quatrièmement, il faut créer le fichier .git/hooks/prepare-commit-msg de manière à enregistrer le nom de la branche dans chaque message de commit. Il faut également que chaque personne qui utilisera le dépôt le crée (sinon, dans le back-office la représentation des branches ne fonctionnera pas - le fichier doit être exécutable).

#!/bin/bash
# https://www.luigifab.info/magento/versioning
NAME=$(git branch | grep "*" | cut -c3-)
echo "{$NAME}" >> "$1"

Avec BZR

Bientôt disponible (ou pas).

Avec SVN

Bientôt disponible (ou pas).

Configuration

Dans Système » Configuration » Outils » Gestionnaire de version.

Gestionnaire de projet

Si vous complétez le champ avec par exemple http://www.redmine.org/issues/, alors les numéros des demandes présents dans les messages de commit seront transformés en liens HTML.

Page de connexion

Page de connexion

Essayer la nouvelle page de connexion au back-office ou la nouvelle page du mot de passe oublié, c'est les adopter !

Ci-contre la nouvelle page de connexion.
Exemple en ligne.

Pages de maintenance

Chaque page est configurable avec ses propres options (principalement le titre et le contenu), la configuration sera sauvegardée automatiquement dans le dossier errors/config.

Lorsque le site est verrouillé, l'accès au back-office est toujours possible :
- les adresses suivantes ne fonctionneront pas : magento.xyz/admin - magento.xyz/index.php/admin
- les adresses suivantes fonctionneront : magento.xyz/admin/ - magento.xyz/index.php/admin/

Intégrateur, développeur, il est possible de modifier l'apparence des pages de maintenance avec des surcharges.
Pour en savoir plus, lisez le fichier lisezmoi disponible dans le dossier errors/config.

Erreur 503 (maintenance.flag)

Erreur 503 (maintenance.flag)

Cette page de maintenance s'active et se désactive dans le back-office dans Outils » Gestionnaire de version, ou manuellement en créant le fichier maintenance.flag. Elle est prioritaire sur la page de mise à jour.

Les options de configuration :

Ci-contre la page par défaut.
Exemple en ligne.

Mise à jour (upgrade.flag)

Mise à jour (upgrade.flag)

Cette page de maintenance s'active et se désactive dans le back-office dans Outils » Gestionnaire de version, ou manuellement en créant le fichier upgrade.flag.

Les options de configuration :

Ci-contre la page par défaut.
Exemple en ligne.

Rapport d'erreur

Rapport d'erreur

Cette page apparaît lorsque Magento rencontre une erreur. Un rapport d'erreur est enregistré dans le dossier var/report (avec un bonus, lorsque disponible, le REQUEST_URI de la page qui a générée l'erreur).

Les options de configuration :

Ci-contre la page par défaut.
Exemple en ligne.

Erreur 404 système

Erreur 404 système

Attention, cette page ne correspond pas à la page d'erreur 404 lorsque l'adresse d'une catégorie ou d'un produit n'existe pas.

Les options de configuration :

Ci-contre la page par défaut.
Exemple en ligne.

Extra

Événements

Trois événements sont disponibles :

Un exemple est disponible dans les fichiers Demo.php et config.xml.

Temporisation de sortie

Très éventuellement :

# stop output buffering with apache
<Location ~ "admin/versioning_repository/upgrade/revision">
	php_flag zlib.output_compression off
</Location>
# stop output buffering with lighttpd
$HTTP["url"] =~ "admin/versioning_repository/upgrade/revision" {
	server.stream-response-body = 2
}

Authentification SSH

Ci-dessous, l'essentiel à retenir pour faire fonctionner l'authentification SSH par clef lorsque vous utilisez un serveur pour le dépôt (comme GitHub), et un autre pour le serveur web. Vous devez créer une clef privée sans mot de passe et la placer dans le dossier /xyz/.git/ssh de votre serveur web.

(1) Premièrement, il faut créer le fichier /xyz/.git/ssh/config.sh :

#!/bin/bash
# https://www.luigifab.info/magento/versioning
ssh -o UserKnownHostsFile=/xyz/.git/ssh/known_hosts -i /xyz/.git/ssh/id_rsa $@

(2) Deuxièmement, il faut lancer ces commandes :

ssh-keyscan gitserver.xyz > /xyz/.git/ssh/known_hosts
chmod 400 /xyz/.git/ssh/*
chmod 500 /xyz/.git/ssh/config.sh
export GIT_SSH=/xyz/.git/ssh/config.sh
git clone ssh://user@gitserver.xyz/name.git -b master /xyz/

Téléchargement et démo du module

Démonstration : configuration / historique des commits / historique des mises à jour / état du dépôt

Clef d'extension : https://www.luigifab.info/magento/connect/luigifab/Luigifab_Versioning
Téléchargement de la dernière version : luigifab-versioning-3.5.0.tgz (md5 1c2e75d4bbd2096ec3a0151ee75b9839)
Dépôt GitHub : github.com

Testé avec Firefox 27/45, Chrome 29/63, Opera 49, IE 11, Edge 14 sur Magento 1.4.1.0 avec PHP 7.1 et MariaDB 10.1.
Testé avec Firefox 45 sur Magento 1.5.0.1 / 1.6.0.0 / 1.7.0.0 / 1.8.0.0 / 1.9.0.0 / 1.9.3.7 avec PHP 7.1 et MariaDB 10.1.

Support

Contact

Un problème ? Une question ? Quelque chose ne fonctionne pas ? Y a un bug ? Contactez-moi (en français ou en anglais), si je ne suis pas en vacances et pas loin de ma boite email, je vous répondrai dans quelques heures.

Vous trouverez mon adresse email dans le fichier README, lisez-le !

Pourquoi nous ?

Parce que nous sommes les meilleurs ! Vous allez adorer nos fichiers minifiés livrés avec nos modules.

Ajouter le contenu de ce fichier dans le fichier skin/adminhtml/default/default/css/custom.css.
Ajouter le petit bout de code suivant au début du fichier index.php.

array_walk_recursive($_GET, function (&$val) { $val = trim($val); });
array_walk_recursive($_POST, function (&$val) { $val = trim($val); });