Projet

Général

Profil

Utiliser GIT pour réaliser une montée de version

Exemple réalisé lors de la montée de version de cdt de 4937 à 4944.

Placer dans le dépôt un hook pre-commit

GIT ne remonte pas les dossiers vides, ils restent fantômes dans le dépôt local et ne sont pas remontés dans le dépôt distant.
Il est possible d'ajouter un hook (crochet Git) pre-commit : script qui sera lancé dans votre dépôt local avant chaque commit.
Ce script disponible en bas de cette page à copier dans .git/hooks de votre dépôt local.

A NOTER : ce hooks n'est jamais remonté sur le dépôt Git lors du push.

Placer dans le dépôt les sources de la nouvelle version

Aller sur la branche upstream

$ git checkout upstream

Créer le dossier src/cdt-4944
Y déposer les sources téléchargées

Commiter tout ça :

$ git add .
$ git commit -a

Merger dans patch :

$ git checkout patch 
$ git merge upstream

Relever les références des commits intéressant sur la branche patch

Note : on travaille dans la branche patch du dépot
Lister les logs

$ git log --oneline

Résultat (un peu raccourci) :

ea60edf Merge branch 'upstream' into patch
d43fe43 Sources téléchargées de la 4944
216e426 Ajoute sondes pour l'espace consultation prof et élève
84c9536 Ajout de la sonde piwik
dd6fbe9 Suppression de la pub pour l'appli mobile (fixes #6948)
173d0a4 adaptation de la version 4.9.3.7 dont correction pour retrouver l'éditeur xinha (fixes #5672)
b096469 suppression de la partie EOLE
a75f0f5 pb sur permission fluxEnvole.php si en mode conteneur
87b1d5f Supression du css dans la reponse
c114261 Correction sur le fluxEnvole.php pour le badge
869b655 Changement des droits/owners de fluxEnvole.php en postservice
58aa7ca Ajout de fluxEnvole (badge CDT) dans tmpl
5074af3 montée de version 4937
63662a8 patch d'initialisation
7708314 netoyage de patch
c3cf447 prise en compte de la version 4.9.3.7 par le script d'installation (ref #5371)
b40ac89 ajout des sources de la version 4.9.3.7 (ref #5371)
c9139a8 option apache pour prise en compte htaccess
aca734a nouveau patch
................

Dans le journal on relève 3 points :
  1. Les sources téléchargées de la version précédente (4937) : b40ac89 ajout des sources de la version 4.9.3.7 (ref #5371)
  2. Les sources téléchargées de la version à mettre à jour (4944) : d43fe43 Sources téléchargées de la 4944
  3. Les sources patchées envole de la version précédente (4937 adapatée à envole) : 216e426 Ajoute sondes pour l'espace consultation prof et élève

Recherche du travail à réaliser pour monter de version :

Note : on travaille dans la branche patch du dépot
Ce travail permet de construire un fichier ods (ou xls) qui nous donnera le travail a effectuer sur les fichiers (voir fichier téléchargeable en bas de cette page).

1: On liste les fichiers qui ont été modifiés pour Envole dans la version précedente

$ git diff b40ac89:src/cdt-4937/ 216e426:src/cdt-4937/ --name-only  > liste-patch-envole.txt

2: On liste les fichiers qui ont été modifiés entre les 2 versions originales (UPSTREAM)

$ git diff b40ac89:src/cdt-4937/ d43fe43:src/cdt-4944/ --name-only > liste-modif-upstream.txt

3: Mise en place de la feuille ods (xls)
  • Créer un nouveau document de type feuille de calcul
  • Recopier dans la colonne A le contenu du fichier liste-patch-envole.txt
  • Recopier dans la colonne B le contenu du fichier liste-modif-upstream.txt
  • A l'aide de couper coller des élèments de la colonne A, mettre en concordance le nom des fichiers.
  • Un fois ce travail réalisé, on observe 3 cas de figure :
    • Fichiers uniquements présents en colonne B : sont mis à jour dans la version originale mais non modifiés pour Envole. Dans ce cas rien n'est à faire.
    • Fichiers uniquements présents dans la colonne A : il s'agit des fichiers
      • modifiés pour Envole mais qui n'ont pas subit de modification dans la version originale
      • ou ajoutés pour les besoins d'Envole et qui n'existent pas dans la version originale.
        Dans ce cas une simple copie de ces fichiers depuis l'ancienne version patchée dans src/cdt-4937 vers le dossier src/cdt-4944
    • Fichiers présents dans les 2 colonnes : dans ce cas, on doit patcher manuellement chaque fichier, il existe 2 méthodes :
      • La plus courante : on regarde ce qui a été modifié pour Envole de l'ancienne version (git diff b40ac89 216e426 src/cdt-4937/chemin/fichier) et on modifie le fichier dans src/cdt-4944
      • La moins courante mais utile si le patch Envole apporte beaucoup de modification par rapport à la modification de version originale : on recopie l'ancienne version du fichier patché dans src/cdt-4937 vers le dossier src/cdt-4944, on regarde ce qui a été modifié dans les versions originales (git diff b40ac89:src/cdt-4937/dossier/fichier d43fe43:src/cdt-4944/dossier/fichier) et on modifie le fichier dans src/cdt-4944

Traitement de la base de données

A faire comme d'habitude :
  • soit il existe un script dans le code de l'appli :
    • On le lance via sharenvole.
    • On le lance en postservice (ligne de commande ou curl -k) ou posttemplate (script en ligne de commande uniquement)
  • On génère un patch sql en réalisant un différentiel entre un dump SQL de la base avant installation et d'un dump SQL après l'installation et le process de maj de l'application :
    • Méthode 1 : on compare les 2 dumps (à l'aide de l'outil diff par exemple) et on écrit les requêtes à la main. Cette méthode peut s'avérer rébarbative.
    • Méthode 2 : on utilise un outil permettrant de "macher le boulôt" comme mysql-diff :
      • Le télécharger sur [[https://bitbucket.org/stepancheg/mysql-diff/downloads/mysql-diff-0.3.tar.gz]]
      • Le décompacter
      • Pour le lancer : monchemin/mysql-diff/bin/mysql-diff dump-avant-install.sql dump-après-install.sql
      • mysql-diff génère les requêtes SQL à intégrer dans les scripts de mise à jour, ce script a cependant quelques petites imperfections :
        • Ne gère pas les AFTER dans les ALTER TABLE ADD COLUMNS....
        • N'aime pas du tout les vues.
        • Le troisième point : je ne sais plus : TODO

modifs-fichiers.xls (19 ko) Igor GODI, 20/03/2014 09:23

pre-commit (1,41 ko) Igor GODI, 20/03/2014 15:36

modif-fichiers-1.9.7e-vers-2.2.2.xls - Un document plus élaboré mais utilisant la méthode pour maj GRR 1.9.7e à 2.2.2 (286 ko) Igor GODI, 28/08/2014 13:44