Projet

Général

Profil

GitMonteeVersion » Historique » Version 12

Igor GODI, 20/03/2014 15:36

1 2 Igor GODI
h1. Utiliser GIT pour réaliser une montée de version
2 2 Igor GODI
3 1 Igor GODI
Exemple réalisé lors de la montée de version de cdt de 4937 à 4944.
4 2 Igor GODI
5 4 Igor GODI
h2. Placer dans le dépôt les sources de la nouvelle version
6 2 Igor GODI
7 2 Igor GODI
Aller sur la branche upstream
8 2 Igor GODI
<pre>
9 2 Igor GODI
$ git checkout upstream
10 2 Igor GODI
</pre>
11 2 Igor GODI
12 2 Igor GODI
Créer le dossier src/cdt-4944
13 2 Igor GODI
Y déposer les sources téléchargées
14 12 Igor GODI
Remplir les dossiers vides par un fichier readme.emptydir car GIT ne remonte pas les dossiers vides sinon et ils restent fantômes dans le dépôt en utilisant le script 
15 2 Igor GODI
16 12 Igor GODI
Commiter tout ça :
17 2 Igor GODI
<pre>
18 2 Igor GODI
$ git add .
19 2 Igor GODI
$ git commit -a
20 2 Igor GODI
</pre>
21 2 Igor GODI
22 2 Igor GODI
Merger dans patch :
23 2 Igor GODI
<pre>
24 2 Igor GODI
$ git checkout patch 
25 2 Igor GODI
$ git merge upstream
26 2 Igor GODI
</pre>
27 2 Igor GODI
28 4 Igor GODI
h2. Relever les références des commits intéressant sur la branche patch
29 2 Igor GODI
30 7 Igor GODI
*Note : on travaille dans la branche patch du dépot*
31 2 Igor GODI
Lister les logs
32 2 Igor GODI
<pre>
33 2 Igor GODI
$ git log --oneline
34 2 Igor GODI
</pre>
35 3 Igor GODI
36 3 Igor GODI
Résultat (un peu raccourci) :
37 3 Igor GODI
<pre>
38 3 Igor GODI
ea60edf Merge branch 'upstream' into patch
39 3 Igor GODI
d43fe43 Sources téléchargées de la 4944
40 3 Igor GODI
216e426 Ajoute sondes pour l'espace consultation prof et élève
41 3 Igor GODI
84c9536 Ajout de la sonde piwik
42 3 Igor GODI
dd6fbe9 Suppression de la pub pour l'appli mobile (fixes #6948)
43 3 Igor GODI
173d0a4 adaptation de la version 4.9.3.7 dont correction pour retrouver l'éditeur xinha (fixes #5672)
44 3 Igor GODI
b096469 suppression de la partie EOLE
45 3 Igor GODI
a75f0f5 pb sur permission fluxEnvole.php si en mode conteneur
46 3 Igor GODI
87b1d5f Supression du css dans la reponse
47 3 Igor GODI
c114261 Correction sur le fluxEnvole.php pour le badge
48 3 Igor GODI
869b655 Changement des droits/owners de fluxEnvole.php en postservice
49 3 Igor GODI
58aa7ca Ajout de fluxEnvole (badge CDT) dans tmpl
50 3 Igor GODI
5074af3 montée de version 4937
51 3 Igor GODI
63662a8 patch d'initialisation
52 3 Igor GODI
7708314 netoyage de patch
53 3 Igor GODI
c3cf447 prise en compte de la version 4.9.3.7 par le script d'installation (ref #5371)
54 3 Igor GODI
b40ac89 ajout des sources de la version 4.9.3.7 (ref #5371)
55 3 Igor GODI
c9139a8 option apache pour prise en compte htaccess
56 3 Igor GODI
aca734a nouveau patch
57 3 Igor GODI
................
58 3 Igor GODI
</pre>
59 3 Igor GODI
60 1 Igor GODI
Dans le journal on relève 3 points :
61 4 Igor GODI
# 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)
62 4 Igor GODI
# Les sources téléchargées de la version à mettre à jour (4944) : *d43fe43* Sources téléchargées de la 4944
63 4 Igor GODI
# 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
64 1 Igor GODI
65 4 Igor GODI
h2. Recherche du travail à réaliser pour monter de version :
66 4 Igor GODI
67 7 Igor GODI
*Note : on travaille dans la branche patch du dépot*
68 5 Igor GODI
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).
69 1 Igor GODI
70 5 Igor GODI
1: On liste les fichiers qui ont été modifiés pour Envole dans la version précedente
71 5 Igor GODI
<pre>
72 8 Igor GODI
$ git diff b40ac89 216e426 --name-only > liste-patch-envole.txt
73 5 Igor GODI
</pre>
74 5 Igor GODI
75 5 Igor GODI
2: On liste les fichiers qui ont été modifiés entre les 2 versions originales (UPSTREAM)
76 5 Igor GODI
<pre>
77 8 Igor GODI
$ git diff b40ac89:src/cdt-4937/ d43fe43:src/cdt-4944/ --name-only > liste-modif-upstream.txt
78 5 Igor GODI
</pre>
79 5 Igor GODI
80 5 Igor GODI
3: Mise en place de la feuille ods (xls)
81 5 Igor GODI
* Créer un nouveau document de type feuille de calcul
82 5 Igor GODI
* Recopier dans la colonne A le contenu du fichier liste-patch-envole.txt
83 5 Igor GODI
* Recopier dans la colonne B le contenu du fichier liste-modif-upstream.txt
84 1 Igor GODI
* A l'aide de couper coller des élèments de la colonne A, mettre en concordance le nom des fichiers.
85 9 Igor GODI
* Un fois ce travail réalisé, on observe 3 cas de figure :
86 6 Igor GODI
** *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.
87 6 Igor GODI
** *Fichiers uniquements présents dans la colonne A* : il s'agit des fichiers 
88 1 Igor GODI
*** modifiés pour Envole mais qui n'ont pas subit de modification dans la version originale
89 1 Igor GODI
*** ou ajoutés pour les besoins d'Envole et qui n'existent pas dans la version originale.
90 6 Igor GODI
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
91 6 Igor GODI
** *Fichiers présents dans les 2 colonnes* : dans ce cas, on doit patcher manuellement chaque fichier, il existe 2 méthodes :
92 8 Igor GODI
*** _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
93 10 Igor GODI
*** _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
94 4 Igor GODI
95 4 Igor GODI
h2. Traitement de la base de données
96 4 Igor GODI
97 4 Igor GODI
A faire comme d'habitude :
98 11 Igor GODI
* soit il existe un script dans le code de l'appli :
99 11 Igor GODI
** On le lance via sharenvole.
100 11 Igor GODI
** On le lance en postservice (ligne de commande ou curl -k) ou posttemplate (script en ligne de commande uniquement)
101 11 Igor GODI
* 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 : 
102 11 Igor GODI
** Méthode 1 : on compare les 2 dumps (à l'aide de l'outil diff par exemple). Cette méthode peut s'avérer rébarbative.
103 11 Igor GODI
** Méthode 2 : on utilise un outil permettrant de "macher le boulôt" comme mysql-diff :
104 11 Igor GODI
*** Le télécharger sur [[https://bitbucket.org/stepancheg/mysql-diff/downloads/mysql-diff-0.3.tar.gz]]
105 11 Igor GODI
*** Le décompacter
106 11 Igor GODI
*** Pour le lancer : monchemin/mysql-diff/bin/mysql-diff dump-avant-install.sql dump-après-install.sql
107 11 Igor GODI
*** mysql-diff génère les requêtes SQL à intégrer dans les scripts de mise à jour, ce script a cependant quelques petites imperfections :
108 11 Igor GODI
**** Ne gère pas les AFTER dans les ALTER TABLE ADD COLUMNS....
109 11 Igor GODI
**** N'aime pas du tout les vues.
110 11 Igor GODI
**** *_Le troisième point : je ne sais plus : TODO_*